读书人

|M| 大家帮帮理解一下static的作用,该

发布时间: 2012-01-11 22:28:46 作者: rapoo

|M| 大家帮帮理解一下static的作用
下面是网页的
public partial class _Default : System.Web.UI.Page
{
Int32 i = 1;
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(i.ToString());

}
}
下面是类的
namespace com.Command
{
public class Edb
{
String _ConnString;
public static String ConnString
{
get
{
if(??) 为什么这里获取不到_ConnString 而要开他前面加个static 呢
}
}

}
}

[解决办法]
static是一个静态变量 有点属于全局的
用c++来描述 ConnString属于Edb::ConnString

_ConnString属于Edb-> _ConnString
[解决办法]
因为 你是在static property你访问


*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

最新版本:20070212

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
[解决办法]
静态方法只能操作静态字段
[解决办法]
因为静态函数只能引用静态对象
[解决办法]
static是静态 是最低级的 非静态 可以调用静态 反之 不可以
请lz 看看基本的语法书
[解决办法]
static代表全局,一般函数应用还可以,没有特殊需求尽量不要在aspx页面来应用此类变量,会造成变量滞留问题,就是多人共用一个变量值。
[解决办法]
建议LZ看看 《C#入门经典》之类的语言入门书 里面有很直观和详细的说明
[解决办法]
非静态类的问题
[解决办法]
String _ConnString; 改为 static String _ConnString; 就好了!

静态方法操作静态字段!


[解决办法]
定义静态变量,全局的
可以任意调用的!
[解决办法]
静态 不需要实例化
[解决办法]
C# 程序员参考
static(C# 参考)
请参见 示例
全部折叠 全部展开 语言筛选器: 全部 语言筛选器: 多个 语言筛选器: Visual Basic 语言筛选器: C# 语言筛选器: C++ 语言筛选器: J# 语言筛选器: JScript
Visual Basic(声明)
Visual Basic(用法)
C#
C++
J#
JScript

使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员。static 修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型。例如,下面的类声明为 static,并且只包含 static 方法。



复制代码
static class CompanyEmployee
{
public static string GetCompanyName(string name) { ... }
public static string GetCompanyAddress(string address) { ... }
}


有关更多信息,请参见静态类和静态类成员(C# 编程指南)。

备注
常数或者类型声明隐式地是静态成员。

不能通过实例引用静态成员。然而,可以通过类型名称引用它。例如,请考虑以下类:

复制代码
public class MyBaseC
{
public struct MyStruct
{
public static int x = 100;
}
}


若要引用静态成员 x,请使用完全限定名(除非可从相同范围访问):

复制代码
MyBaseC.MyStruct.x


尽管类的实例包含该类所有实例字段的单独副本,但每个静态字段只有一个副本。

不可以使用 this 来引用静态方法或属性访问器。

如果对类应用 static 关键字,则该类的所有成员都必须是静态的。

类(包括静态类)可以有静态构造函数。在程序开始和实例化类之间的某个时刻调用静态构造函数。

注意
static 关键字在使用上比在 C++ 中有更多的限制。若要与 C++ 关键字比较,请参见 static。


为了说明静态成员,请看一个表示公司雇员的类。假设该类包含一种对雇员计数的方法和一个存储雇员数的字段。该方法和字段都不属于任何实例雇员,而是属于公司类。因此,应该将它们声明为此类的静态成员。

示例
该示例读取新雇员的名称和 ID,逐个增加雇员计数器并显示新雇员的有关信息以及新的雇员数。为简单起见,该程序从键盘读取当前的雇员数。在实际的应用中,应从文件读取此信息。

复制代码
// cs_static_keyword.cs
using System;

public class Employee
{
public string id;
public string name;

public Employee()
{
}

public Employee(string name, string id)
{
this.name = name;
this.id = id;
}

public static int employeeCounter;

public static int AddEmployee()
{
return ++employeeCounter;
}
}

class MainClass : Employee
{
static void Main()
{
Console.Write( "Enter the employee 's name: ");
string name = Console.ReadLine();
Console.Write( "Enter the employee 's ID: ");
string id = Console.ReadLine();

// Create and configure the employee object:
Employee e = new Employee(name, id);
Console.Write( "Enter the current number of employees: ");
string n = Console.ReadLine();
Employee.employeeCounter = Int32.Parse(n);
Employee.AddEmployee();

// Display the new information:
Console.WriteLine( "Name: {0} ", e.name);
Console.WriteLine( "ID: {0} ", e.id);
Console.WriteLine( "New Number of Employees: {0} ",
Employee.employeeCounter);
}
}


输入

Tara Strahan
AF643G
15


示例输出

Enter the employee 's name: Tara Strahan
Enter the employee 's ID: AF643G
Enter the current number of employees: 15
Name: Tara Strahan
ID: AF643G
New Number of Employees: 16


此示例显示:虽然可以用另一个尚未声明的静态字段实例化一个静态字段,但只要给静态字段显式赋值后,结果才是确定的。

复制代码
// cs_static_keyword_2.cs
using System;
class Test
{
static int x = y;
static int y = 5;

static void Main()
{
Console.WriteLine(Test.x);
Console.WriteLine(Test.y);

Test.x = 99;
Console.WriteLine(Test.x);
}
}


输出

0
5
99

读书人网 >asp.net

热点推荐