`
dawuafang
  • 浏览: 1104946 次
文章分类
社区版块
存档分类
最新评论

c#函数与相关类

 
阅读更多

●·● 目录:

A1 …………函数
A2 …………ArrayList 类
A3 …………Hashtable 类
A4 …………Random 类
A5 …………Math 类
A6 …………DateTime 结构
A7 …………TimeSpan 结构
A8 …………DateAndTime 结构
A9 …………Format 类

---------------------------------------------------------------------------------------------------------

╔════════╗
╠════╣第A1个 ╠══════════════════════════════════════════════════╣
╚════════╝

●·●函数

1. 函数Main()是控制台应用程序的入口点函数~void表示函数没有返回值!下面是有返回值的:

    static <returnType> <functionName>()
    {
        ...
        return <returnValue>;    //在执行到return语句时,程序会立即返回调用代码,函数立即终止!
    }    //return语句是一定要执行的,函数必须要有返回值!

2. 带有参数的函数:

    static <returnType> <functionName>(<paramType> <paramName>, ...)
    {
        ...
        return <returnValue>;
    }

3. 全局变量和局部变量:用static关键字来定义,当全局变量和局部变量同名时,要在全局变量的前面加上类名,如果没有局部变量会被使用,而全局变量会被屏蔽掉,例如在下面Main函数中,Program.myString是全局变量,而myString是局部变量。如果不是同名,则可以直接用!

  • 复制代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Ch06Ex01
    {
    class Program
        {
    staticstring myString;
    
    staticvoid Write()
            {
    string myString = "String defined in Write()";
                Console.WriteLine("Now in Write()");
                Console.WriteLine("Local myString = {0}", myString);
                Console.WriteLine("Global myString = {0}", Program.myString);
            }
    
    staticvoid Main(string[] args)
            {
    string myString = "String defined in Main()";
                Program.myString = "Global string";
                Write();
                Console.WriteLine("\nNow in Main()");
                Console.WriteLine("Local myString = {0}", myString);
                Console.WriteLine("Global myString = {0}", Program.myString);
                Console.ReadKey();
            }
        }
    //Output:
    
            //Now in Write()
            //Local myString = String defined in Write()
            //Global myString = Global string
    
            //Now in Main()
            //Local myString = String defined in Main()
            //Global myString = Global string
    }
    复制代码
  • 若变量在循环内部初始化,则在外部无法调用这个变量,因为在循环结束时,值会丢失,在for循环中定义的变量,在for外面不可以调用,所以在定义变量的时候要初始化。
  • View Code - 错误

4. 参数数组:

static <returnType> <functionName>(<p1Type><p1Name>, ... ,params <type>[] <name>)
{
   ...
   return <returnValue>;
}
  • 复制代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace Ch06Ex03
    {
    class Program
        {
    staticint SumVals(int m,paramsint[] vals)     //参数数组
            {
    int sum = 0;
    foreach (int val in vals)
                {
                    sum += val;
                }
    return sum * m;
            }
    
    staticvoid Main(string[] args)
            {
    int i = 100;
    int sum = SumVals(i, 1, 5, 2, 9, 8);    //调用函数,随意写入数组
    int sum2 = SumVals(i, 2, 4, 4, 5, 6, 6, 7, 7);
                Console.WriteLine("Summed Values = {0}", sum);
                Console.WriteLine("Summed Values = {0}", sum2);
    int[] exer = { 1, 3, 4, 5, 6, 7 };  //直接定义数组
                Console.WriteLine("summed Values = {0}", SumVals(i, exer));
                Console.ReadKey();
            }
    
    //Summed Values = 2500
            //Summed Values = 4100
    
        }
    }
    复制代码

5. 引用参数、值参数、输出参数

  • 值参数(val):把一个值传递给函数使用,对函数中此变量的任何修改都不影响函数调用中指定的参数。
  • 引用参数(ref):对这个变量进行的任何改变都会影响用作参数的变量值,使用ref关键字指定参数。
  • 复制代码
    staticint ShowDouble(refint val)
            {
                val *= 2;
    return val;
            }
    
    staticvoid Main(string[] args)
            {
    int myNumber = 5;
                Console.WriteLine("myNumber = {0}", myNumber);
                Console.WriteLine("myNumber.ShowDouble = {0}", ShowDouble(ref myNumber));
                Console.WriteLine("myNumber.ShowDouble = {0}", ShowDouble(ref myNumber));
                Console.WriteLine("myNumber.ShowDouble = {0}", ShowDouble(ref myNumber));
                Console.WriteLine("myNumber.ShowDouble = {0}", ShowDouble(ref myNumber));
                Console.WriteLine("myNumber.ShowDouble = {0}", ShowDouble(ref myNumber));
                Console.WriteLine("myNumber = {0}", myNumber);
                Console.ReadKey();
            }
    //myNumber = 5
            //myNumber.ShowDouble = 10
            //myNumber.ShowDouble = 20
            //myNumber.ShowDouble = 40
            //myNumber.ShowDouble = 80
            //myNumber.ShowDouble = 160
            //myNumber = 160
            //请按任意键继续. . .
    
    
    
    
    staticvoid ShowDouble(refint val)
            {
                val *= 2;
                Console.WriteLine("val doubled = {0}", val);
            }
    
    staticvoid Main(string[] args)
            {
    int myNumber = 5;
                Console.WriteLine("myNumber = {0}", myNumber);
                ShowDouble(ref myNumber);   //在调用函数的时候不要忘记ref
                Console.WriteLine("myNumber = {0}", myNumber);
                Console.ReadKey();
    
            }
    //myNumber = 5
            //val doubled = 10
            //myNumber = 10
    复制代码
    • 输出参数(out):执行方式与引用参数完全一样,区别:把未赋值的变量用作ref参数是非法的,但可以把未赋值的变量用作out参数,因为out参数在定义函数的时候必须要先初始化。
  • 复制代码
    staticvoid Main(string[] args)
            {
    int[] outArray;
    int[] refArray = 
                { 
    1, 2, 3, 4, 5
                };
    //使用out传递数组
                outArrayMethod(out outArray);//适用out关键字前不必进行初始化
                Console.WriteLine("使用out传递数组:");
    //使用for循环输出数组元素的值
    for (int i = 0; i < outArray.Length; i++)
                {
                    Console.Write(outArray[i] + "");
                    Console.WriteLine("outArray[{0}] = {1}", i, outArray[i]);
                }
    // 使用ref传递数组
                refArrayMethod(ref refArray);//适用ref关键字前必须进行初始化
                Console.WriteLine("\n使用ref传递数组:");
    //使用for循环输出数组元素的值
    for (int i = 0; i < refArray.Length; i++)
                {
                    Console.WriteLine("refArray[{0}] = {1}", i, refArray[i]);
                }
    
                Console.ReadLine();
            }
    ///<summary>
            /// 使用out传递数组
            ///</summary>
            ///<param name="arr">int类型数组</param>
    staticvoid outArrayMethod(outint[] arr)
            {
    // 创建数组
                arr = newint[5] 
                { 
    1, 2, 3, 4, 5
                };
            }
    ///<summary>
            /// 使用ref传递数组
            ///</summary>
            ///<param name="arr">int类型数组</param>
    staticvoid refArrayMethod(refint[] arr)
            {
    //如果为空则重新创建
    if (arr == null)
                {
                    arr = newint[8];
                }
                arr[0] = 1234;
                arr[3] = 4321;
            }
    
    //使用out传递数组:
                //1 outArray[0] = 1
                //2 outArray[1] = 2
                //3 outArray[2] = 3
                //4 outArray[3] = 4
                //5 outArray[4] = 5
    
                //使用ref传递数组:
                //refArray[0] = 1234
                //refArray[1] = 2
                //refArray[2] = 3
                //refArray[3] = 4321
                //refArray[4] = 5
    复制代码

6. 可以定义两个名称相同的函数,但是其类型要不同,不能通过不同的返回值类型来定义相同的函数,因为签名(名称+类型)是相同的。

复制代码
        static void ShowDouble(ref int val)
        {
           ...
        }
        static void ShowDouble(int val)
        {
           ...
        }
        static void ShowDouble(double val)
        {
           ...
        }   //三个不同的函数,参数的类型是不同的,只不过名字是相同的
复制代码

---------------------------------------------------------------------------------------------------------

╔════════╗
╠════╣第A2个 ╠══════════════════════════════════════════════════╣
╚════════╝

●·●ArrayList 类

1. ArrayList类在System.Collections命名空间中!

ArrayList Li = new ArrayList();
ArrayList Li = new ArrayList(5);
通过Add方法可以加入各种类型的数据,若是超过容量,则容量会成倍自动增加!

2. ArrayList 构造函数:

  • ArrayList():初始化ArrayList类的新实例,该实例为空并且具有默认初始容量。
  • ArrayList(ICollecion):初始化ArrayList类的新实例,该实例包含从指定集合复制的元素并且具有与所复制的元素数相同的初始容量。
  • ArrayList(Int32):初始化ArrayList类的新实例,该实例为空并且具有指定的初始容量。
  • 上面ICollection可以是ArrayList,也可以是Array,即普通数组,如下示例:
  • View Code - ArrayList构造函数举例

3. ArrayList 方法:

  • Add:将对象添加到ArrayList的结尾处。
  • AddRange:将数组的元素添加到ArrayList的末尾。
  • Clear:从ArrayList中移除所有元素。
  • IndexOf(Object):第一个匹配的索引。
  • IndexOf(Object, Int32):指定初始查询位置。
  • Insert:将元素插入ArrayList的指定索引处。
  • InsertRange:将数组元素插入ArrayList的指定索引处。
  • LastIndexOf(Object):搜索指定要素,并返回整个ArrayList中最后一个匹配项的索引。
  • LastIndexOf(Object, Int32):搜素int32范围内最后一个匹配的索引。
  • Remove:从ArrayList中移除特定对象的第一个匹配项。
  • RemoveAt:移除ArrayList的指定索引处的元素。
  • RemoveRange:从ArrayList中移除一定范围的元素,索引+个数。
  • Reverse:将整个ArrayList中元素的顺序反转。
  • Reverse(Int32, Int32):将指定范围中元素的顺序反转。
  • Sort:对整个ArrayList中的元素进行排序。
  • ToString:返回表示当前对象的字符串。

4. ArrayList 属性:

  • Capacity:获取或设置ArrayList可包含的元素数。
  • Count:获取ArrayList中实际包含的元素数。

复制代码
staticvoid Main(string[] args)
        {
            ArrayList Li = new ArrayList(4);
            Console.WriteLine("Li中的元素个数为{0}", Li.Count);
            Console.WriteLine("Li中的容量为{0}", Li.Capacity);
            Console.WriteLine();

            Li.Add("Alex");
            Li.Add("McDelfino");
            Li.Add('a');
            Li.Add("Alex");
            Li.Add("Alex");
            Li.Add(3);
            Li.Add("Alex");
            Li.Add("Alex");
            Li.Add("Alex");
            Li.Add(1);
for (int i = 0; i < Li.Count;i++)
            {
                Console.WriteLine(Li[i]);
            }
            Console.WriteLine();
int[] inum = {1,3,5,7,9};
            Li.AddRange(inum);
for (int i = 0; i < Li.Count;i++)
            {
                Console.WriteLine(Li[i]);
            }
            Console.WriteLine();

            Li.InsertRange(3, inum);
for (int i = 0; i < Li.Count; i++)
            {
                Console.WriteLine(Li[i]);
            }
            Console.WriteLine();

            Li.RemoveAt(3);
for (int i = 0; i < Li.Count; i++)
            {
                Console.WriteLine(Li[i]);
            }
            Console.WriteLine();

            Li.RemoveRange(4, 4);
for (int i = 0; i < Li.Count; i++)
            {
                Console.WriteLine(Li[i]);
            }
            Console.WriteLine();

            Console.ReadKey();

        }
//Alex
        //Alex
        //3
        //Alex
        //Alex
        //Alex
        //1
        //1
        //3
        //5
        //7
        //9

        //Alex
        //McDelfino
        //a
        //3
        //5
        //7
        //9
        //Alex
        //Alex
        //3
        //Alex
        //Alex
        //Alex
        //1
        //1
        //3
        //5
        //7
        //9

        //Alex
        //McDelfino
        //a
        //3
        //Alex
        //3
        //Alex
        //Alex
        //Alex
        //1
        //1
        //3
        //5
        //7
        //9
复制代码

---------------------------------------------------------------------------------------------------------

╔════════╗
╠════╣第A3个 ╠══════════════════════════════════════════════════╣
╚════════╝

●·●Hashtable 类

1. Hashtable类在System.Collections命名空间中!

Hashtable ht = new ArrayList();
Hashtable ht = new ArrayList(5); 

复制代码
staticvoid Main(string[] args)
        {
            Hashtable ht = new Hashtable();
            ht.Add("001", "number");
            ht.Add("002", "number");
            ht.Add("003", "number");
            ht.Add("004", "number");
            ht.Add("005", "number");

            Console.WriteLine("输出ht的键/值的对数为:{0}",ht.Count);
foreach(DictionaryEntry de in ht)   //关键字DictionaryEntry定义每个哈希值
            {
                Console.Write("{0,-4}", de.Key);
                Console.Write("{0,-4}", de.Value);
                Console.WriteLine();

            }
            Console.WriteLine();
foreach (string s in ht.Keys)
            {
                Console.Write("{0,-4}", s);
                Console.Write("{0,-4}", ht[s]);
                Console.WriteLine();
            }

            Console.ReadKey();

        }

//输出ht的键/值的对数为:5
            //003 number
            //004 number
            //005 number
            //001 number
            //002 number

            //003 number
            //004 number
            //005 number
            //001 number
            //002 number
复制代码

2. Hashtable 方法:

  • Add:将带有指定键和值的元素添加到Hashtable。
  • Clear:从Hashtable中移除所有元素。
  • Contains:确定Hashtable是否包含特定键。
  • ContainsKey:同上。
  • ContainsValue:确定Hashtable是否包含特定值。
  • Remove:从Hashtable中移除带有指定键的元素。
  • ToString:返回表示当前对象的字符串。

3. Hashtable 属性:

  • Count:获取包含在Hashtable中的键/值对的数目。
  • Keys:获取包含Hashtable中的键的ICollection。

4. Values:获取包含Hashtable中的值的ICollection。

DictionaryEntry 结构:用来遍历Hashtable中的成员。

  • Key:键值
  • Value:值

① 用 Hashtable 建立 distinct 集合!

复制代码
        private void loadRegionData()
        {
            comboBox4.Items.Clear();
            ILayer pLayer = axMapControl1.get_Layer(0);
            IFeatureLayer pFLayer = pLayer as IFeatureLayer;
            IFeatureClass pFClass = pFLayer.FeatureClass;
            IFields pFields = pFClass.Fields;
            int Index = pFClass.FindField("REGION");  //找到列所在的 Index!

            IFeatureCursor pFCursor = pFClass.Search(null, false);  //用于循环
            IFeature pFeature = pFCursor.NextFeature();     //用于获取每一个feature

            Hashtable ht = new Hashtable();    //新建Hashtable

            while (pFeature != null)
            {
                string name = pFeature.get_Value(Index);    //获取 Index 列的值!
                if (!ht.ContainsKey(name))        //判断ht中是否含有name的Key,没有就添加
                {
                    ht.Add(name, name);
                }
                pFeature = pFCursor.NextFeature();
            }

            foreach (object o in ht.Values)    //遍历ht中的Values
            {
                comboBox4.Items.Add(o.ToString());
            }
            comboBox4.Text = comboBox4.Items[0].ToString();
        }
复制代码

如何修改HashTable中指定键的值

---------------------------------------------------------------------------------------------------------

╔════════╗
╠════╣第A4个 ╠══════════════════════════════════════════════════╣
╚════════╝

●·●Random 类

1.表示伪随机数生成器,一种能够产生满足某些随机性统计要求的数字序列的设备。

2. Random 构造函数:

  • Random():使用与时间相关的默认种子值,初始化Random类的新实例。所以在一个循环中生成的随机数是相同的。
  • Random(Int32):使用指定的种子值初始化Random类的新实例。每个数字对着一个随机数,同一范围内的这个数是不变的。
  • View Code - Random()举例
  • View Code - Random(Int32)举例

3. Random 方法:

  • Next():返回非负随机数。
  • Next(Int32):返回一个小于所指定最大值的非负随机数。
    返回值不包括Max!
  • Next(Int32, Int32):返回一个指定范围内的随机数。
    返回的值中包括Min,不包括Max!
  • NextDouble:返回一个介于0.0和1.0之间的随机数。
  • NextBytes:用随机数填充指定字节数组的元素,0-255.
  • View Code - NextBytes

※ Random 扩展:http://www.cnblogs.com/zhanqi/archive/2011/03/25/1996013.html

---------------------------------------------------------------------------------------------------------

╔════════╗
╠════╣第A5个 ╠══════════════════════════════════════════════════╣
╚════════╝

●·●Math 类

1. 数学相关的类。

2. Math 方法:

  • Acos:返回余弦值为指定数字的角度。
  • Asin:返回正弦值为指定数字的角度。
  • Atan:返回正切值为指定数字的角度。
  • Atan2:返回正切值为两个指定数字的商的角度。
  • Cos:返回指定角度的余弦值。
  • Sin:返回指定角度的正弦值。
  • Tan:返回指定角度的正切值。
  • Abs:返回指定数字的绝对值。
  • Ceiling:返回大于或等于指定数字的最小整数。
  • Floor:返回小于或等于指定数字的最大整数。
  • Round:将值舍入到接近的整数或指定的小数位数
    • Round(Double):四舍五入。
    • Round(Double, Int32):四舍五入,小数位数。
    • Round(Double, MidpointRounding)
    • Round(Double, Int32, MidpointRounding)
    • MidpointRounding.ToEven:舍入最接近的偶数。 2.5 → 2
    • MidpointRounding.AwayFromZero:舍入绝对值较大的值。 2.5 → 3
  • Exp:返回e的指定次幂。
  • Pow:返回指定数字的指定次幂。
  • Log10:返回指定数字以10为低的对数。
  • Log:返回指定数字的对数。
    • Lg(Double):返回指定数字的自然对数(底为e)。
    • Log(Double, Double):返回指定数字在使用指定底数时的对数。
    • Log(1000, 10) = 3 底数写在后面。
  • Max:返回两个指定数字中较大的一个。
  • Min:返回两个指定数字中较小的一个。
  • Sqrt:返回指定数字的平方根。
  • Truncate:计算一个数字的整数部分。

3. Math 字段:

  • E:表示自然对数的底,它由常数e指定。
  • PI:表示圆的周长与其直径的比值。

---------------------------------------------------------------------------------------------------------

╔════════╗
╠════╣第A6个 ╠══════════════════════════════════════════════════╣
╚════════╝

●·●DateTime 结构

1. 表示时间上的一刻,通常以日期和当天的时间表示。

2. DateTime 结构构造函数:

  • DateTime(Int64):将DateTime结构的新实例初始化为指定的刻度数。
  • DateTime(Int32, Int32, Int32):将DateTime结构的新实例初始化为指定的年、月和日。
  • DateTime(Int32, Int32, Int32, Int32, Int32, Int32):将DateTime结构的新实例初始化为指定的年、月、日、小时、分钟和秒。
  • DateTime(Int32, Int32, Int32, Int32, Int32, Int32, Int32):将DateTime结构的新实例初始化为指定的年、月、日、小时、分钟、秒和毫秒。

3. DateTime 结构属性:

  • Now:获取当前时间。(static)
    • ToLongDateString:将当前DateTime对象的值转换为其等效的长日期字符串表示形式。
      举例:2012年2月17日
    • ToLongTimeString:将当前DateTime对象的值转换为其等效的长时间字符串表示形式。
      举例:16:16:16
    • ToShortDateString:将当前DateTime对象的值转换为其等效的短日期字符串表示形式。
      举例:2012/2/17
    • ToShortTimeString:将当前DateTime对象的值转换为其等效的短时间字符串表示形式。
      举例:16:16
  • Today:获取当前日期。(static)
  • Date:获取此实例的日期部分。
  • Year:获取此实例所表示日期的年份部分。
  • Month:获取此实例所表示日期的月份部分。
  • Day:获取此实例所表示的日期为该月中的第几天。
  • DayOfWeek:获取此实例所表示的日期是星期几。
  • DayOfYear:获取此实例所表示的日期是该年中的第几天。
  • Hour:获取此实例所表示日期的小时部分。
  • Minute:获取此实例所表示日期的分钟部分。
  • Second:获取此实例所表示日期的秒部分。
  • Millisecond:毫秒。
  • Ticks:刻度数。
  • TimeOfDay:获取此实例的当天的时间。

4. DateTime 结构字段:

  • MaxValue:最大值。(static)
  • MinValue:最小值。(static)

5. DateTime 结构方法(方法产生效果,但是自身没变化):

  • Add:将指定的TimeSpan的值加到此实例的值上。
  • AddYears:
  • AddMonths:
  • AddDays:
  • AddHours:
  • AddMinutes:
  • AddSeconds:
  • AddMilliseconds:毫秒
  • AddTicks:刻度数,1s = 10000000刻度数
  • Compare:s
  • CompareTo:
  • Equals:s

参考:http://zhidao.baidu.com/question/246229487.html

---------------------------------------------------------------------------------------------------------

╔════════╗
╠════╣第A7个 ╠══════════════════════════════════════════════════╣
╚════════╝

●·●TimeSpan 结构

1. 表示一个时间间隔。

2. TimeSpan 构造函数

  • TimeSpan(Int64) 将新的 TimeSpan 初始化为指定的刻度数。
    TimeSpan(Int32, Int32, Int32) 将新的 TimeSpan 初始化为指定的小时数、分钟数和秒数。
    TimeSpan(Int32, Int32, Int32, Int32) 将新的 TimeSpan 初始化为指定的天数、小时数、分钟数和秒数。
    TimeSpan(Int32, Int32, Int32, Int32, Int32) 将新的 TimeSpan 初始化为指定的天数、小时数、分钟数、秒数和毫秒数。

3. TimeSpan 结构属性

  • 名称

    说明

    Days

    获取由当前 TimeSpan 结构表示的整天数。

    Hours

    获取由当前 TimeSpan 结构表示的整小时数。

    Milliseconds

    获取由当前 TimeSpan 结构表示的整毫秒数。

    Minutes

    获取由当前 TimeSpan 结构表示的整分钟数。

    Seconds

    获取由当前 TimeSpan 结构表示的整秒数。

    Ticks

    获取表示当前 TimeSpan 结构的值的刻度数。

    TotalDays

    获取以整天数和天的小数部分表示的当前 TimeSpan 结构的值。

    TotalHours

    获取以整小时数和小时的小数部分表示的当前 TimeSpan 结构的值。

    TotalMilliseconds

    获取以整毫秒数和毫秒的小数部分表示的当前 TimeSpan 结构的值。

    TotalMinutes

    获取以整分钟数和分钟的小数部分表示的当前 TimeSpan 结构的值。

    TotalSeconds

    获取以整秒数和秒的小数部分表示的当前 TimeSpan 结构的值。

---------------------------------------------------------------------------------------------------------

╔════════╗
╠════╣第A8个 ╠══════════════════════════════════════════════════╣
╚════════╝

●·●DateAndTime 类

1. 先要:using Microsoft.VisualBasic;

在这之前 添加引用.net的Microsoft.VisualBasic 项!在“解决方案资源管理器”中的引用中操作!

2.DateAndTime模块包含在日期和时间操作中使用的过程和属性。

3. DateAndTime 方法:

  • DateDiff(DateInterval, DateTime, DateTime, FirstDayOfWeek, FirstWeekOfYear):返回一个Long值,该值指定两个Date值之间的时间间隔数。(后-前)
    • Interval:必选。DateInterval 枚举值或 String 表达式,表示要用作 Date1 和 Date2 之间差额的单位的时间间隔。
    • Date1:必选。Date.要在计算中使用的第一个日期/时间值。
    • Date2:必选。Date.要在计算中使用的第二个日期/时间值。
    • DayOfWeek:可选。从 FirstDayOfWeek 枚举中选择的值,用于指定一周的第一天。如果未指定,则使用 FirstDayOfWeek.Sunday。
    • WeekOfYear:可选。从 FirstWeekOfYear 枚举中选择的值,用于指定一年的第一周。如果未指定,则使用 FirstWeekOfYear.Jan1。

---------------------------------------------------------------------------------------------------------

╔════════╗
╠════╣第A9个 ╠══════════════════════════════════════════════════╣
╚════════╝

●·●Format 格式

1. 将指定的String中的每个格式项替换为相应对象的值的文本等效项。

2. Format 举例:

  • string.Format("{0:C}", 8);        // (C) Currency        0 表示第一个参数!
    ¥8.00
  • string.Format("{0:D3}", 8);        // (D) Decimal
    008 
    string.Format("{0:000}", 8);
    008
    
  • string.Format("{0:P2}", 8);        // (P) Percent
    800.00%
  • string.Format("{1:0.00}", 8, 10);       // 1 表示第二个参数
    10.00
  • string.Format("{0:#,###.00}", 2011)
    2011.00
  • 复制代码
                Console.WriteLine(string.Format("{0:C3}",2));
                Console.WriteLine("{0:C3}", 2);
                Console.WriteLine(string.Format("{0:D3}", 2));
                Console.WriteLine(string.Format("{0:0.00}", 2));
                Console.WriteLine("{0:00}", 2);
                Console.WriteLine("{0:##.##}", 2.565897);
                Console.WriteLine("{0:0.0%}", 0.255);
                Console.WriteLine("{0:#,###.00}", 2011);
                Console.WriteLine("{0:$.00}", 2);
                Console.WriteLine("{0:-0}", 2);
    
                //¥2.000
                //¥2.000
                //002
                //2.00
                //02
                //2.57
                //25.5%
                //2,011.00
                //$2.00
                //-2
    复制代码
  • None 显示没有任何格式设置的数字。
    (0) 数字占位符。显示一个数字或 0。如果表达式在格式字符串中出现 0 的位置上有数字,则显示该数字;否则在该位置显示 0。如 果数字的位数少于格式表达式中 0 的个数(小数点任一侧),则显示前导零或尾随零。如果数字的小数点分隔符右侧的位数多于格式表达式中小数点分隔符右侧零的个数,则将数字舍入到与零的个数 相同的小数位置。如果数字的小数点分隔符左侧的位数多于格式表达式中小数点分隔符左侧零的个数,则不做任何修改地显示额外的数字。
    (#) 数字占位符。显示一个数字或不显示任何数字。如果表达式在格式字符串中出现#字符的位置上有数字,则显示该数字;否则该位置不显示任何数字。该符号与0数字占位符的作用相似,不同的是当数字的位数少于格式表达式中小数点分隔符任一侧#字符的个数时,不显示前导零和尾随零。
    (.) 小数点占位符。小数点占位符确定小数点分隔符两侧显示的数字个数。如果格式表达式中该符号的左侧只包含#字符,则小于 1 的数字将以小数点分隔符开头。若要显示与小数一起显示的前导零,请将零用作小数点分隔符左侧的第一个数字占位符。在某些区域设置中,逗号用作小数点分隔 符。格式化输出中用作小数点占位符的实际字符取决于系统所识别的数字格式。这样,即使所在的区域使用逗号作为小数点占位符,也应该使用句点作为格式中的小 数点占位符。格式化的字符串将以相应于区域设置的正确格式显示。
    (%) 百分比占位符。用 100 乘以表达式。在格式字符串中出现百分比占位符的位置插入百分比字符 (%)。
    (,) 千位分隔符。在小数点分隔符左侧有四个或更多位数的数字中,千位分隔符将千位与百位分隔开。如果格式中的千位分隔符包含在数字占位符(0#)中,则指定了千位分隔符的标准用法。紧挨在小数点分隔符左侧(不论是否指定小数)或用作字符串中最右边字符的千位分隔符表示:“通过将数字除以 1,000 来换算数字,并根据需要进行舍入”。小于 1,000 但大于等于 500 的数显示为1,小于 500 的数显示为0。此处使用两个相邻的千位分隔符表示按一百万的因子进行换算,每增加一个分隔符,因子就乘以 1,000。如 果多个分隔符不是位于紧挨小数点分隔符左侧的位置或字符串中最右边的位置,则只将它们视作指定使用千位分隔符。在某些区域设置中,句点用作千位分隔符。格 式化输出中用作千位分隔符的实际字符取决于系统所识别的“数字格式”。这样,即使所在的区域使用句点作为千位分隔符,也应该使用逗号作为格式中的千位分隔 符。格式化的字符串将以相应于区域设置的正确格式显示。例如,请考虑以下三个格式字符串:
    • "#,0.",该字符串以千位分隔符将数字 1 亿格式化为字符串“100,000,000”。
    • "#0,.",该字符串将一千作为比例因子,将数字 1 亿格式化为字符串“100000”。
    • "#,0,.",该字符串使用千位分隔符并将一千作为比例因子,将数字 1 亿格式化为字符串“100,000”。
    (:) 时间分隔符。在某些区域设置中,可以使用其他字符表示时间分隔符。时间分隔符在格式化时间值时分隔小时、分钟和秒。格式化输出中用作时间分隔符的实际字符由系统设置确定。
    (/) 日期分隔符。在某些区域设置中,可以使用其他字符表示日期分隔符。日期分隔符在格式化日期值时分隔日、月和年。格式化输出中用作日期分隔符的实际字符由系统设置确定。
    (E-E+e-e+) 科学格式。如果格式表达式在E-E+e-e+的左侧至少包含一个数字占位符(0#),则数字将以科学格式显示,并在数字与其指数之间插入Ee。左侧数字占位符的个数确定指数中数字的个数。使用E-e-在负指数旁边放置减号。使用E+e+在负指数旁边放置减号,在正指数旁边放置加号。还必须在该符号的右侧包含数字占位符,才能获得正确的格式设置。
    -+$( ) 原义字符。这些字符显示后的外观与在格式字符串中键入时的外观完全一样。若要显示列出的这些字符之外的某个字符,请在字符前加反斜杠 (\) 或将字符括在双引号 (" ") 中。
    (\) 显示格式字符串中的下一个字符。若要将具有特殊意义的字符显示为原义字符,请在其前面加反斜杠 (\)。反斜杠本身不显示。使用反斜杠的效果与将下一个字符括在双引号中相同。若要显示反斜杠,请使用两个反斜杠 (\\)。不能显示为原义字符的字符示例包括:日期格式字符和时间格式字符(acdhmnpqstwy/:);数字格式字符(#0%Ee、逗号和句点)以及字符串格式字符(@&<>!)。
    ("ABC") 显示双引号 (" ") 内的字符串。若要在代码内将字符串包含在 style 参数中,必须使用Chr(34)来包含文本(34是引号 (") 的字符代码)。
  • 示例:
  • 格式 (Style)

    “5”格式化为

    “-5”格式化为

    “0.5”格式化为

    Zero-length string ("")

    5

    -5

    0.5

    0

    5

    -5

    1

    0.00

    5.00

    -5.00

    0.50

    #,##0

    5

    -5

    1

    $#,##0;($#,##0)

    $5

    ($5)

    $1

    $#,##0.00;($#,##0.00)

    $5.00

    ($5.00)

    $0.50

    0%

    500%

    -500%

    50%

    0.00%

    500.00%

    -500.00%

    50.00%

    0.00E+00

    5.00E+00

    -5.00E+00

    5.00E-01

    0.00E-00

    5.00E00

    -5.00E00

    5.00E-01


在这之前 添加引用.net的Microsoft.VisualBasic 项!在“解决方案资源管理器”中的引用中操作!

分享到:
评论

相关推荐

    C#函数实用手册

    此外还辅以示例对类的典型成员函数的使用做了介绍,让读者迅速地掌握函数的具体用法,并且提供快速的函数索引,让读者查找相关函数的用法。 本书内容丰富,结构清晰,使用方便,主要面向中级以上水平的程序员,...

    C#调用C++动态库,执行回调函数并传递结构体参数

    c#调用C++动态库、执行回调函数,并回传结构体参数数据。vs2017环境编写C#和C++动态库,这个为完整工程例子,可供相关人员学习参考。

    C#公共类通用类非常齐全

    处理数据类型转换,数制转换、编码转换相关的类(ConvertHelper.cs) CRC校验辅助类(CRCUtils.cs) 枚举操作公共类(EnumHelper.cs) 身份证操作辅助类(IDCardHelper.cs) 检测字符编码的类(IdentifyEncoding.cs) RGB...

    C#调用C++中的类

    C#调用C++中的类,将已有的C++类,通过类库进行封装,生成DLL,C#调用类库生成的DLL实现C#调用C++中的类及其相关函数。

    Api精灵 for c#

    函数与C#中函数的对应关系。 5。API常量查询(给出能够直接在C#中调用的代码) 6。显示对函数对操作系统的支持(WIN9X OR WIN2K) 贴心小功能 1。代码中关键字高亮显示,不同关键字显示不同颜色。 2。与...

    C#公共通用类

    处理数据类型转换,数制转换、编码转换相关的类(ConvertHelper.cs) CRC校验辅助类(CRCUtils.cs) 枚举操作公共类(EnumHelper.cs) 身份证操作辅助类(IDCardHelper.cs) 检测字符编码的类(IdentifyEncoding.cs) RGB...

    在C#中调用 java的函数(C#与java结合使用)的ikvm相关包

    b:建立一个JavaProject,自定义包、类、需要透露给外界的方法,然后、将这个JavaProject打包成jar文件。(eclipse和myeclipse都自带的,或者你可以显摆一下,用黑框框敲几个代码整)。 c:狸猫换太子:jar&gt;&gt;dll ...

    C# 一个完整的类示例:字段、属性、构造函数和方法学习示例

    这个示例展示了如何使用C#类来表示一个人,并使用字段、属性、构造函数和方法来操作和展示人的相关信息。在Person类中,有三个字段和一个属性: name字段用于存储人的姓名。 age字段是一个私有字段,用于存储人的...

    浅析C#静态类,静态构造函数,静态变量

    主要介绍了浅析C#静态类,静态构造函数,静态变量 的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下

    C#科学计算讲义

    附录A C# 数值代数类的抽象与设计  附录B 动态链接库与混合编程  B.1 静态链接库与动态链接库  B.2 C#调用Fortran动态链接库范例  B.3 调用可执行函数  附录C Linux下C#开发与跨平台编程介绍  C.1 ...

    Visual C# 2010程序设计教程(教程PPT+源代码)

    5.2.1 类与对象概述 5.2.2 面向对象程序设计相关概念 5.2.3 类的声明与System Object类 5.2.4 对象的声明与类的实例化 5.2.5 类成员 5.2.6 类成员的访问限制 5.2.7 this关键字 5.3 构造函数与析构函数 5.3.1 构造...

    c#公共类包括DBHelper和其它很多公共函数V1.1

    又修改了一次,将winform相关的和webform相关的分开,调用时更加清晰。

    纯虚函数和抽象类的应用举例

    某企业有不同类型的雇员:管理人员、销售人员、...企业财务部门有雇员记录文件,记录了雇员的类型、编号、姓名、及相关的工作情况。 要求设计程序,从记录文件中读取数据,计算雇员的月工资,并输出雇员的相关信息。

    c# asp.net 随机码通用生成类

    您可以方便的通过此类生成任何随机码的图片,只需设置您想生成随机码的相关参数即可生成!

    C#高级编程中期总结

    关于强名称程序集的部署 C#中的类成员总结 区分构造函数、析构函数、静态构造函数、私有构造函数 结构与类的区别 关于Object的相关信息 字符串分析 表达式 集合与数组 委托与事件 内存管理 不安全代码和指针

    C#.NET万能数据库访问封装类(ACCESS、SQLServer、Oracle)

    C#.NET万能数据库访问封装类(ACCESS、...这个类封装成dll后,相关数据库连接可在,引用该dll项目的app.config文件中写,如果是web程序,这需要修改代码,将构造函数中获取app.config的信息换成获取web.config的信息。

    (修正)Api精灵 for c#

    函数与C#中函数的对应关系。5。API常量查询(给出能够直接在C#中调用的代码)6。显示对函数对操作系统的支持(WIN9X OR WIN2K)--------------------------贴心小功能---------...

    C#微软培训资料

    15.5 抽象类与接口 .195 15.6 小 结 .196 第十六章 组织应用程序 .198 16.1 基 本 概 念 .198 16.2 使用名字空间 .200 16.3 使用指示符 .203 16.4 程 序 示 例 .206 16.5 小 结 .213 第十七章 文 件 ...

    c# 加密和解密相关代码

    数据的加密与解密 文件的加密与解密 第 章 加密与解密技术 第19章 加密与解密技术 829 19.1 数据的加密与解密 实例571 异或算法对数字进行加密与解密 光盘位置:光盘\MR\19\571 中级 趣味指数: 实 例说明 在实现...

    C#开发串口与OPC程序

    在调试ICU通信设备的时候,由于串口通信老出现故障,所以就怀疑CF实现的SerialPort类是否有问题,所以最后决定用纯API函数实现串口读写。 先从网上搜索相关代码(关键字:C# API 串口),发现网上相关的资料大约来源...

Global site tag (gtag.js) - Google Analytics