C# 方法使用汇总(GetEnumerator用法,??用法等)

目录:

1、??运算符使用

2、GetEnumerator方法

3、ResourceManager.GetString方法获得Resources的字符。

4、获得Settings文件的字符。

一、??可能是一个被遗忘的运算符,很少看到有人用它,它的用法很简单却很实用:
variable ?? defaultValue
相当于
variable == null ? defaultValue : variable
有了它,一行便能搞定Lazy Evaluation了:
使用??之前:

public UserAccess Users
{
get
{
if (_users == null )
{
_users
= Proxy.GetQueryObject < UserAccess > ();
}
return _users;
}
}


之后:

public UserAccess Users
{
get
{
return _users ?? (_users = Proxy.GetQueryObject < UserAccess > ());
}
}


注:这个运算符只支持引用类型和Nullable类型。

int?就是Nullable<int>,Nullable类型也支持的。

原文:http://www.cnblogs.com/Dah/archive/2007/09/29/910479.html

 

二.GetEnumerator

C# 方法使用汇总(GetEnumerator用法,??用法等)下面的示例说明 GetEnumerator 方法的用法。包括在枚举数为活动的情况下从基础 DataTable 中删除行时枚举数的行为。
C# 方法使用汇总(GetEnumerator用法,??用法等)
C# 方法使用汇总(GetEnumerator用法,??用法等)view plaincopy to clipboardprint
?
C# 方法使用汇总(GetEnumerator用法,??用法等)
public static void Main()
C# 方法使用汇总(GetEnumerator用法,??用法等)
{
C# 方法使用汇总(GetEnumerator用法,??用法等)
try
C# 方法使用汇总(GetEnumerator用法,??用法等)
{
C# 方法使用汇总(GetEnumerator用法,??用法等) DataTable userTable
= new DataTable("peopleTable");
C# 方法使用汇总(GetEnumerator用法,??用法等)
C# 方法使用汇总(GetEnumerator用法,??用法等) userTable.Columns.Add(
"Id", typeof(int));
C# 方法使用汇总(GetEnumerator用法,??用法等) userTable.Columns.Add(
"Name", typeof(string));
C# 方法使用汇总(GetEnumerator用法,??用法等)
C# 方法使用汇总(GetEnumerator用法,??用法等)
// Note that even if you create the DataTableReader
C# 方法使用汇总(GetEnumerator用法,??用法等)
// before adding the rows, the enumerator can still
C# 方法使用汇总(GetEnumerator用法,??用法等)
// visit all the rows.
C# 方法使用汇总(GetEnumerator用法,??用法等)
DataTableReader reader = userTable.CreateDataReader();
C# 方法使用汇总(GetEnumerator用法,??用法等) userTable.Rows.Add(
new object[] { 1, "Peter" });
C# 方法使用汇总(GetEnumerator用法,??用法等) userTable.Rows.Add(
new object[] { 2, "Mary" });
C# 方法使用汇总(GetEnumerator用法,??用法等) userTable.Rows.Add(
new object[] { 3, "Andy" });
C# 方法使用汇总(GetEnumerator用法,??用法等) userTable.Rows.Add(
new object[] { 4, "Russ" });
C# 方法使用汇总(GetEnumerator用法,??用法等)
C# 方法使用汇总(GetEnumerator用法,??用法等) IEnumerator enumerator
= reader.GetEnumerator();
C# 方法使用汇总(GetEnumerator用法,??用法等)
// Keep track of whether the row to be deleted
C# 方法使用汇总(GetEnumerator用法,??用法等)
// has actually been deleted yet. This allows
C# 方法使用汇总(GetEnumerator用法,??用法等)
// this sample to demonstrate that the enumerator
C# 方法使用汇总(GetEnumerator用法,??用法等)
// is able to survive row deletion.
C# 方法使用汇总(GetEnumerator用法,??用法等)
bool isRowDeleted = false;
C# 方法使用汇总(GetEnumerator用法,??用法等)
while (enumerator.MoveNext())
C# 方法使用汇总(GetEnumerator用法,??用法等)
{
C# 方法使用汇总(GetEnumerator用法,??用法等) DbDataRecord dataRecord
= (DbDataRecord)enumerator.Current;
C# 方法使用汇总(GetEnumerator用法,??用法等)
C# 方法使用汇总(GetEnumerator用法,??用法等)
// While the enumerator is active, delete a row.
C# 方法使用汇总(GetEnumerator用法,??用法等)
// This doesn't affect the behavior of the enumerator.
C# 方法使用汇总(GetEnumerator用法,??用法等)
if (!isRowDeleted)
C# 方法使用汇总(GetEnumerator用法,??用法等)
{
C# 方法使用汇总(GetEnumerator用法,??用法等) isRowDeleted
= true;
C# 方法使用汇总(GetEnumerator用法,??用法等) userTable.Rows[
2].Delete();
C# 方法使用汇总(GetEnumerator用法,??用法等) }

C# 方法使用汇总(GetEnumerator用法,??用法等) Console.WriteLine(dataRecord.GetString(
1));
C# 方法使用汇总(GetEnumerator用法,??用法等) }

C# 方法使用汇总(GetEnumerator用法,??用法等) }

C# 方法使用汇总(GetEnumerator用法,??用法等)
catch (Exception ex)
C# 方法使用汇总(GetEnumerator用法,??用法等)
{
C# 方法使用汇总(GetEnumerator用法,??用法等) Console.WriteLine(ex);
C# 方法使用汇总(GetEnumerator用法,??用法等) }

C# 方法使用汇总(GetEnumerator用法,??用法等) Console.ReadLine();  

原文:http://www.cnblogs.com/suiqirui19872005/archive/2007/08/11/851752.html

2.2第二种用法

        const int times =1000;



        public static void Test2()

        {  

          Stopwatch watch = new Stopwatch();

          Hashtable hastable = new Hashtable();

          

            for (int i = 0; i < 10000; i++)

            {

                hastable.Add(i, i.ToString() + "值");

            }

            //测试GetEnumerator

            watch.Start();

            for (int i = 0; i < times; i++)

            {

                IDictionaryEnumerator enumerator = hastable.GetEnumerator();

                while (enumerator.MoveNext())

                {

                    string key = enumerator.Key.ToString();

                    string value = enumerator.Value.ToString();

                }

            }

            watch.Stop();

            Console.WriteLine("Hashtable GetEnumerator耗时" + watch.ElapsedMilliseconds);

            Console.WriteLine("---------------");



            watch.Reset();

            //测试ForEach

            watch.Start();

            for (int i = 0; i < times; i++)

            {

                foreach (object item in hastable.Keys)

                {

                    string key = item.ToString();

                    string value = hastable[item].ToString();

                }

            }

            watch.Stop();

            Console.WriteLine("Hashtable ForEach耗时" + watch.ElapsedMilliseconds);

            Console.WriteLine("---------------");



            watch.Reset();

            Dictionary<int, string> dictionary = new Dictionary<int, string>();

            for (int i = 0; i < 10000; i++)

            {

                dictionary.Add(i, i.ToString() + "值");

            }

            watch.Start();

            for (int i = 0; i < times; i++)

            {                

                Dictionary<int,string>.Enumerator enumerator = dictionary.GetEnumerator();

                while (enumerator.MoveNext())

                {

                    int key = enumerator.Current.Key;

                    string value = enumerator.Current.Value;

                }

            }

            watch.Stop();

            Console.WriteLine("Dictionary GetEnumerator耗时" + watch.ElapsedMilliseconds);

            Console.WriteLine("---------------");



            watch.Reset();

            //测试ForEach

            watch.Start();

            for (int i = 0; i < times; i++)

            {

                foreach (int item in dictionary.Keys)

                {

                    int key = item;

                    string value = dictionary[item];

                }

            }

            watch.Stop();

            Console.WriteLine("Dictionary ForEach耗时" + watch.ElapsedMilliseconds);

            Console.WriteLine("---------------");

            Console.ReadKey();

        }

    }

  原文:http://www.cnblogs.com/scottckt/archive/2011/05/16/2048243.html

 三、获得Resources的字符。通过ResourceManager.GetString方法获得定义在Properties.Resources的String字符。 WpfApplicationSomeMethodTest.Properties.Resources.ResourceManager.GetString("TestString");


四、获得Settings文件的字符。WpfApplicationSomeMethodTest.Properties.Settings.Default.DefaultFolder;

 

 


 

 

你可能感兴趣的:(enum)