C#中typeof(string)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中typeof(string)相关的知识,希望对你有一定的参考价值。

private void InitReport()

string str = "select autoPeriod from Setting";
DataTable dts = SQLServer.SQLInquiry(str);
string strAutoPeriodId = "-1"; // 默认权限

if (dts.Rows.Count == 1)

strAutoPeriodId = dts.Rows[0][0].ToString().Trim();


string strSql = "select * from Period";
DataTable dt = SQLServer.SQLInquiry(strSql);
dt.Columns.Add("strWeek1", typeof(string));
dt.Columns.Add("strWeek2", typeof(string));
dt.Columns.Add("strWeek3", typeof(string));
dt.Columns.Add("strWeek4", typeof(string));
dt.Columns.Add("strWeek5", typeof(string));
dt.Columns.Add("strWeek6", typeof(string));
dt.Columns.Add("strWeek7", typeof(string));
dt.Columns.Add("IsAuto", typeof(string));

// 处理星期, true为√ false为×
int nRow = dt.Rows.Count;
for (int i = 0; i < nRow; i++)

DataRow dtr = dt.Rows[i];
for (int j = 0; j < 7; j++)

bool bIsCheck = Convert.ToBoolean(dtr[4 + j]);
if (bIsCheck)

dtr[13 + j] = "√";

else

dtr[13 + j] = "×";


if (dtr["periodId"].ToString().Trim() == strAutoPeriodId)

dtr["IsAuto"] = "★";



rptPeriodList.DataSource = dt;
rptPeriodList.DataBind();

能解释13是怎么来的吗,4是第5列属性
表中属性依次为periodId,name,datetimeStart,datetimeEnd,Monday,Tuesday,Wednesday,
Thursday,Friday,Saturday,Sunday,timeBegin,timeEnd

Period 表里按列的索引排下去是这样的:
0:periodId ,1:name,2:datetimeStart,3: datetimeEnd, 4:Monday, 5:Tuesday, 6:Wednesday,
7:Thursday, 8:Friday, 9: Saturday, 10:Sunday, 11:timeBegin, 12:timeEnd

dt.Columns.Add("strWeek1", typeof(string)); 这句话的意思是向Period里添加新的列,列名为strWeek1,类型是string。所以加完以后多出来的列如下:
13:strWeek1,14:strWeek2, .... , 19: strWeek7, 20:IsAuto

现在知道13怎么出来的了吧?
参考技术A 楼上好详细……

C# Type

System.Type 类对于反射起着核心的作用。但它是一个抽象的基类,Type有与每种数据类型对应的派生类,我们使用这个派生类的对象的方法、字段、属性来查找有关该类型的所有信息。


获得给定类型的TYPE引用有3个方式:

    使用 C# typeof 运算符:
        Type t = typeof(string);
    使用对象GetType()方法:
        string s = "grayworm";
        Type t = s.GetType(); 
    还可以调用Type类的静态方法GetType():
        Type t = Type.GetType("System.String");


上面这三类代码都是获取string类型的Type(第三种方式很少使用),在取出string类型的Type引用t后,我们就可以通过t来探测string类型的结构了。 
            
string n = "grayworm";
            Type t = n.GetType();
            foreach (MemberInfo mi in t.GetMembers())
            {
                Console.WriteLine("{0}/t{1}",mi.MemberType,mi.Name);
            }
    
    
Type类的属性:
        Name 数据类型名
        FullName 数据类型的完全限定名(包括命名空间名)
        Namespace 定义数据类型的命名空间名
        IsAbstract 指示该类型是否是抽象类型
        IsArray   指示该类型是否是数组
        IsClass   指示该类型是否是类
        IsEnum   指示该类型是否是枚举
        IsInterface    指示该类型是否是接口
        IsPublic 指示该类型是否是公有的
        IsSealed 指示该类型是否是密封类
        IsValueType 指示该类型是否是值类型
    
Type类的方法:
        GetConstructor(), GetConstructors():返回ConstructorInfo类型,用于取得该类的构造函数的信息
        GetEvent(), GetEvents():返回EventInfo类型,用于取得该类的事件的信息
        GetField(), GetFields():返回FieldInfo类型,用于取得该类的字段(成员变量)的信息
        GetInterface(), GetInterfaces():返回InterfaceInfo类型,用于取得该类实现的接口的信息
        GetMember(), GetMembers():返回MemberInfo类型,用于取得该类的所有成员的信息
        GetMethod(), GetMethods():返回MethodInfo类型,用于取得该类的方法的信息
        GetProperty(), GetProperties():返回PropertyInfo类型,用于取得该类的属性的信息
    可以调用这些成员,其方式是调用TypeInvokeMember()方法,或者调用MethodInfo, PropertyInfo和其他类的Invoke()方法。 


本文出自 “Better_Power_Wisdom” 博客,请务必保留此出处http://aonaufly.blog.51cto.com/3554853/1858980

以上是关于C#中typeof(string)的主要内容,如果未能解决你的问题,请参考以下文章

vb.net 中有没有类似与 c# 的 typeof(String) 的方法

在 C# 中动态创建类型数组

C#控制台 typeof获取一个类的命名空间.类名

C# typeof 与GetType()的区别

c#中怎么将string转化为枚举

C#里面的datagridview