帮我解释下,谢谢了 static 修饰的 是静态方法 用类名.方法名 调用另一个不是 用 类对象.方法名 调用 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第一个为私有的方法第二个为私有的静态方法有static时静态的成员静态类不能静态成员静态类不能被实例化 public class TempClass { public static void say() { Console.WriteLine("static say"); } public void sayHello() { Console.WriteLine("sayHello"); } }TempClass.say(); TempClass tc = new TempClass(); tc.sayHello(); 5楼说的很清楚了。这里我补充一点:static可以理解为全局的,虽然static成员是用 类名.方法名(参数) 的形式调用的,它不属于任何一个类,但是现在面向对象给它赋予了一定的访问权限。如果懂C++的话,这个好理解点。 静态方法跟实例方法,静态方法直接用类名调用,像MATH类里面的一些方法就是静态方法,实例方法是要用类创建的对象来调用 private static void NanDu(string sql) { try { DBHelper.connection.Open(); SqlCommand command = new SqlCommand(sql, DBHelper.connection); int a = command.ExecuteNonQuery(); if (a == 1) { if(this.contextMenuStrip.Text=="删除") { MessageBox.Show("操作成功"); } } else { MessageBox.Show("操作失败"); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { DBHelper.connection.Close(); }这段代码运行时有问题,说关键字this在静态属性,静态方法,静态字段无效,请大家帮我解释下 this指代当前对象(实例),静态成员肯定不可访问实例成员的 this指代当前对象。。this在这里不能这样用! 在类的成员的类型或者返回值类型前面加上关键字static,就能将该成员定义为静态成员(static member)。常量或类型声明会隐式地声明为静态成员,其他没有用static修饰的成员都是实例成员(instance member)或者称为非静态成员。静态成员属于类,被这个类的所有实例所共享;实例成员属于对象(类的实例),每一个对象都有实例成员的不同副本。静态成员具有下列特征:— 静态成员必须通过类名使用 . 运算符来引用,而不能用对象来引用。— 一个静态字段只标识一个存储位置。无论创建了一个类的多少个实例,它的静态字段在内存中都只占同一块区域。— 静态函数成员(方法、属性、事件、运算符或构造函数)不能作用于具体的实例,在这类函数成员中不能直接使用实例成员,必须通过类名来引用。实例成员具有以下特点:— 实例成员必须通过对象名使用 . 运算符来引用,而不能用类名来引用。— 类的实例字段属于类的实例所有,每创建一个类的实例,都在内存中为实例字段开辟了一块区域。类的每个实例分别包含一组该类的所有实例字段的副本。— 实例函数成员(方法、属性、索引器、实例构造函数或析构函数)作用于类的给定实例,在它们的代码体内可以直接引用类的静态和实例成员。其实,我们在前面的几章中大量使用的Console类的WriteLine等方法都是静态方法,都是通过类名Console来引用的。理解下面的代码,体会静态成员和实例成员的使用方法:class Test{int x; // 实例字段static int y; // 静态字段void F() // 实例方法{x = 1; // 正确:实例方法内可以直接引用实例字段y = 1; // 正确:实例方法内可以直接引用静态字段}static void G() // 静态方法{x = 1; // 错误:静态方法内不能直接引用实例字段y = 1; // 正确:静态方法可以直接引用静态字段}static void Main() // 静态方法{Test t = new Test(); // 创建对象t.x = 1; // 正确:用对象引用实例字段t.y = 1; // 错误:不能用对象名引用静态字段Test.x = 1; // 错误:不能用类名引用实例字段Test.y = 1; // 正确:用类名引用静态字段t.F(); // 正确:用对象调用实例方法t.G(); // 错误:不能用对象名调用静态方法Test.F(); // 错误:不能用类名调用实例方法Test.G(); // 正确:用类名调用静态方法}}注意 上述代码中,Main也是Test类的静态方法,可以在其中直接使用静态成员,而不需要使用类名来引用。下面的程序演示了静态字段的性质:// StaticMember.cs// 静态字段的例子using System;public class Count{static int count;int number;public Count(){count = count + 1;number = count;}public void show(){Console.WriteLine("object{0} : count={1}", number, count);}}class Test{public static void Main(){Count a = new Count();a.show();Console.WriteLine("-----------------");Count b = new Count();a.show();b.show();Console.WriteLine("-----------------");Count c = new Count();a.show();b.show();c.show();}}其输出结果为:object1 : count=1-----------------object1 : count=2object2 : count=2-----------------object1 : count=3object2 : count=3object3 : count=3从上面的例子中可以看出,无论何时,类的所有实例的静态字段count的值都是相同的,一个实例改变了它的值,其他实例得到的值也将随之变化,说明所有实例都使用同一个count字段;而每个实例的成员字段number的值都是不同的,也不能被其他的实例化改变。 静态成员和静态方法是类的一部分,不能用对象引用,而应用类引用。比如,static void G() 是狗(Dog)这个类的一部分,所以引用他自然要用类来引用,即Dog.G()。而不能用小白(xiaobai)这对象(实例)来引用,即xiaobai.G()是非法的。 关于WINFORM窗体程序调用 类库项目 引用不到的问题(在线等) 关于VM运行Win2008 X64的问题 我在SQL SERVER 2000的Image字段中存200M的文件却不行呢,存100以内的是可以的呢?? 解铃还需系铃人,zswang请进!!! asp.net中的页面布局问题 结构赋值与类赋值的差别? 关于操作Excel 小数位数为题 3个Gmail邀请,先来先得 请教死锁的问题 使用OracleConnection的条件是什么? 请求看看 为什么提示我 当前不存在名称 TextBox1
第二个为私有的静态方法
有static时静态的成员
静态类不能静态成员
静态类不能被实例化
public class TempClass
{
public static void say()
{
Console.WriteLine("static say");
} public void sayHello()
{
Console.WriteLine("sayHello");
}
}TempClass.say(); TempClass tc = new TempClass();
tc.sayHello();
{
try
{
DBHelper.connection.Open();
SqlCommand command = new SqlCommand(sql, DBHelper.connection);
int a = command.ExecuteNonQuery();
if (a == 1)
{
if(this.contextMenuStrip.Text=="删除")
{
MessageBox.Show("操作成功");
}
}
else
{
MessageBox.Show("操作失败");
}
}
catch (Exception ex)
{ MessageBox.Show(ex.Message);
}
finally
{
DBHelper.connection.Close();
}
这段代码运行时有问题,说关键字this在静态属性,静态方法,静态字段无效,请大家帮我解释下