C#中的#代表啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中的#代表啥?相关的知识,希望对你有一定的参考价值。
嗯, 正像楼上所说, 这个#代表的意义只能是传说, 官方是没有答案的.我还听说一个解释说这个#代表着4个+,也就是(C++)++的意思,当然这也是传说... 参考技术A c sharp
c
# sharp 参考技术B sharp
锐利的,尖锐的 参考技术C ::(两个冒号)-----------------------
命名空间别名限定符运算符,用于查找标识符。它通常放置在两个标识符之间,命名空间别名限定符可以是
global。这将调用全局命名空间中的查找,而不是在别名命名空间中。
?:(一个问号,一个冒号)
--------
条件运算符, 检查给出的第一个表达式
expression
是否为真。如果为真,则计算
operand1,否则计算
operand2。这是唯一带有三个操作数的运算符
。 &=(一个&,一个等号)------------
复合赋值运算,表示先且位运算后赋值??(两个问号) ---------------------用于泛型中,在值类型为空时指定默认值
<<=(两个小于号,一个等号)----
复合赋值运算,表示向左移位后再赋值 参考技术D 1998年12月,微软启动了一个全新的语言项目——COOL,这是一款专门为CLR设计的纯面向对象的语言,也正是本文的主角——C#的前身。历时
半年有余,1999年7月份,微软完成了COOL语言的一个内部版本。直到2000年2月份,微软才正式将COOL语言更名为C#。据说起这个名字是因为C#开发小组的人很讨厌搜索引擎,因此把大部分搜索引擎无法识别的“#” 字符作为该语言名字的一部分;还有一种说法是在音乐当中“#”是升调记号,表达了微软希望它在C的基础上更上一层楼的美好愿望——当然这些都只是传说,无从考证。
C#读做 "C sharp",中文译音暂时没有.专业人士一般读"C sharp",现在很多非专业一般读"C井"。C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。
——摘自百度百科本回答被提问者采纳
c# 中括号(【】)代表啥
[
ToolboxItem(false),
ParseChildren(true)
]
public class CheckboxAlls : CollectionBase
或则
[ToolboxData(@"<0:kj_gridview runat='server'></0:kj_gridview>")]
public class kj_gridview:GridView
这里中括号是什么意思有什么用
哪里能用到?
说的详细的在给100!
属性提供功能强大的方法以将声明信息与 C# 代码(类型、方法、属性等)相关联。与程序实体关联后,属性可在运行时查询,并可以以任意多种方式使用。
属性的用法示例包括:
将帮助文档与程序实体关联(通过 Help 属性)。
将值编辑器关联到 GUI 框架中的特定类型(通过 ValueEditor 属性)。
除一个完整的示例外,本教程还包括以下主题:
声明属性类
第一件需要做的事情是声明属性。
使用属性类
创建属性后,随即将属性与特定的程序元素关联。
通过反射访问属性
属性与程序元素关联后,即可使用反射查询属性存在及其值。
声明属性类
在 C# 中声明属性很简单:它采取从 System.Attribute 继承的类声明的形式,并已用 AttributeUsage 属性标记,如下所示:
1using System;
2[AttributeUsage(AttributeTargets.All)]
3public class HelpAttribute : System.Attribute
4
5 public readonly string Url;
6
7 public string Topic // Topic is a named parameter
8
9 get
10
11 return topic;
12
13 set
14
16 topic = value;
17
18
19
20 public HelpAttribute(string url) // url is a positional parameter
21
22 this.Url = url;
23
24
25 private string topic;
26
代码讨论
属性 AttributeUsage 指定该属性可以应用于的语言元素。
属性类是从 System.Attribute 派生的公共类,至少有一个公共构造函数。
属性类有两种类型的参数:
“定位参数”,每次使用属性时都必须指定这些参数。定位参数被指定为属性类的构造函数参数。在上面的示例中,url 便是一个定位参数。
“命名参数”,可选。如果使用属性时指定了命名参数,则必须使用参数的名称。通过包含非静态字段或属性来定义命名参数。在上面的示例中,Topic 便是一个命名参数。
属性参数限制为下列类型的常数值:
简单类型(bool、byte、char、short、int、long、float 和 double)
string
System.Type
enums
对象(对象类型的属性参数的参数必须是属于上述类型之一的常数值。)
以上任意类型的一维数组
AttributeUsage 属性的参数
属性 AttributeUsage 提供声明属性的基础机制。
AttributeUsage 具有一个定位参数:
AllowOn 指定可以将属性赋给的程序元素(类、方法、属性、参数等)。该参数的有效值可以在 .NET Framework 中的 System.Attributes.AttributeTargets 枚举中找到。该参数的默认值是所有程序元素 (AttributeElements.All)。
AttributeUsage 有一个命名参数:
AllowMultiple,一个布尔值,指示是否可以为一个程序元素指定多个属性。该参数的默认值为 false。
使用属性类
以下是使用上一节中声明的属性的简单示例:
1[HelpAttribute("http://localhost/MyClassInfo")]
2class MyClass
3
4
本示例中,HelpAttribute 属性与 MyClass 关联。
注意 根据约定,所有属性名称都以单词“Attribute”结束,以便将它们与 .NET Framework 中的其他项区分。但是,在代码中使用属性时不需要指定属性后缀。例如,可以如下指定 HelpAttribute:
1[Help("http://localhost/MyClassInfo")] // [Help] == [HelpAttribute]
2class MyClass
3
4
通过反射访问属性
属性与程序元素关联后,可以使用反射查询属性存在及其值。查询属性的主要反射方法包含在 System.Reflection.MemberInfo 类(GetCustomAttributes 方法族)中。下面的示例演示使用反射获取对属性的访问的基本方法:
1class MainClass
2
3 public static void Main()
4
5 System.Reflection.MemberInfo info = typeof(MyClass);
6 object[] attributes = info.GetCustomAttributes(true);
7 for (int i = 0; i < attributes.Length; i ++)
8
9 System.Console.WriteLine(attributes[i]);
10
11
12
示例
下面是集合所有部分的完整示例。
1// AttributesTutorial.cs
2// This example shows the use of class and method attributes.
3
4using System;
5using System.Reflection;
6using System.Collections;
7
8// The IsTested class is a user-defined custom attribute class.
9// It can be applied to any declaration including
10// - types (struct, class, enum, delegate)
11// - members (methods, fields, events, properties, indexers)
12// It is used with no arguments.
13public class IsTestedAttribute : Attribute
14
15 public override string ToString()
16
17 return "Is Tested";
18
19
20
21// The AuthorAttribute class is a user-defined attribute class.
22// It can be applied to classes and struct declarations only.
23// It takes one unnamed string argument (the author's name).
24// It has one optional named argument Version, which is of type int.
25[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]
26public class AuthorAttribute : Attribute
27
28 // This constructor specifies the unnamed arguments to the attribute class.
29 public AuthorAttribute(string name)
30
31 this.name = name;
32 this.version = 0;
33
34
35 // This property is readonly (it has no set accessor)
36 // so it cannot be used as a named argument to this attribute.
37 public string Name
38
39 get
40
41 return name;
42
43
44
45 // This property is read-write (it has a set accessor)
46 // so it can be used as a named argument when using this
47 // class as an attribute class.
48 public int Version
49
50 get
51
52 return version;
53
54 set
55
56 version = value;
57
58
59
60 public override string ToString()
61
62 string value = "Author : " + Name;
63 if (version != 0)
64
65 value += " Version : " + Version.ToString();
66
67 return value;
68
69
70 private string name;
71 private int version;
72
73
74// Here you attach the AuthorAttribute user-defined custom attribute to
75// the Account class. The unnamed string argument is passed to the
76// AuthorAttribute class's constructor when creating the attributes.
77[Author("Joe Programmer")]
78class Account
79
80 // Attach the IsTestedAttribute custom attribute to this method.
81 [IsTested]
82 public void AddOrder(Order orderToAdd)
83
84 orders.Add(orderToAdd);
85
86
87 private ArrayList orders = new ArrayList();
88
89
90// Attach the AuthorAttribute and IsTestedAttribute custom attributes
91// to this class.
92// Note the use of the 'Version' named argument to the AuthorAttribute.
93[Author("Jane Programmer", Version = 2), IsTested()]
94class Order
95
96 // add stuff here
97
98
99class MainClass
100
101 private static bool IsMemberTested(MemberInfo member)
102
103 foreach (object attribute in member.GetCustomAttributes(true))
104
105 if (attribute is IsTestedAttribute)
106
107 return true;
108
109
110 return false;
111
112
113 private static void DumpAttributes(MemberInfo member)
114
115 Console.WriteLine("Attributes for : " + member.Name);
116 foreach (object attribute in member.GetCustomAttributes(true))
117
118 Console.WriteLine(attribute);
119
120
121
122 public static void Main()
123
124 // display attributes for Account class
125 DumpAttributes(typeof(Account));
126
127 // display list of tested members
128 foreach (MethodInfo method in (typeof(Account)).GetMethods())
129
130 if (IsMemberTested(method))
131
132 Console.WriteLine("Member 0 is tested!", method.Name);
133
134 else
135
136 Console.WriteLine("Member 0 is NOT tested!", method.Name);
137
138
139 Console.WriteLine();
140
141 // display attributes for Order class
142 DumpAttributes(typeof(Order));
143
144 // display attributes for methods on the Order class
145 foreach (MethodInfo method in (typeof(Order)).GetMethods())
146
147 if (IsMemberTested(method))
148
149 Console.WriteLine("Member 0 is tested!", method.Name);
150
151 else
152
153 Console.WriteLine("Member 0 is NOT tested!", method.Name);
154
155
156 Console.WriteLine();
157
158
输出
Attributes for : Account
Author : Joe Programmer
Member GetHashCode is NOT tested!
Member Equals is NOT tested!
Member ToString is NOT tested!
Member AddOrder is tested!
Member GetType is NOT tested!
Attributes for : Order
Author : Jane Programmer Version : 2
Is Tested
Member GetHashCode is NOT tested!
Member Equals is NOT tested!
Member ToString is NOT tested!
Member GetType is NOT tested!
参考资料:http://www.cnblogs.com/sleeper520/archive/2008/11/04/1326255.html
参考技术A 除了他的,我觉得还有,就是存在2个括号内容的情况,外面的用大括号,里面表达的意思还必须有个括号,外面的用大括号,里面就得用中括号了 参考技术B 你那段代码是一个自定义控件的吧。 括号里面的是修饰属性, 那一段的意思就是:在使用这个控件的时候,默认会有那些属性,就比如说 <asp:label ID='label1' runat='server'></asp:label>,你拖出来的时候就会加上 ID,runat 这两个属性。 参考技术C 这是类的一个修饰,叫Attribute。根据不同的attribute有一些不同的功能,提供给编译器或者反射等用途。 参考技术D 放在类前修饰类的[SomeClass(Params)]是自定义属性类,通常称作是特性类,作用就是给类添加一些额外的特性,比如:[Serializable]
class myClass
public int aget;set;
public string bget;set;
这里a、b都是myClass的属性,加一行[Serializable],这就是特性,表示myClass类可以被序列化,这时myClass的一个实例就能被序列化保存到本地磁盘或database中,不加的话就没有这个特性了。
以上是关于C#中的#代表啥?的主要内容,如果未能解决你的问题,请参考以下文章