1楼:匿名用户
们都知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等。在多数情况下可以混用。
二者本质的区别在于,const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。而static readonly是在运行时计算出其值的,所以还可以通过静态构造函数来赋值。
明白了这个本质区别,我们就不难看出下面的语句中static readonly和const能否互换了:
1. static readonly myclass myins = new myclass();
2. static readonly myclass myins = null;
3. static readonly a = b * 20;
static readonly b = 10;
4. static readonly int constintarray = new int ;
5. void somefunction()
1:不可以换成const。new操作符是需要执行构造函数的,所以无法在编译期间确定
2:可以换成const。我们也看到,reference类型的常量(除了string)只能是null。
3:可以换成const。我们可以在编译期间很明确的说,a等于200。
4:不可以换成const。道理和1是一样的,虽然看起来1,2,3的数组的确就是一个常量。
5:不可以换成readonly,readonly只能用来修饰类的field,不能修饰局部变量,也不能修饰property等其他类成员。
2楼:匿名用户
static 是静态的修饰符,const是定义常量的修饰符.
const和static const的区别
3楼:枫玺
const和static const的区别:
一、全局的区别
const规定变量在全局中是只读的变量,并且它的值无法被修改。
static const规定变量在当前的模块中是只读的变量,无法再全局中被其他模块读取。
二、文件的区别
const定义的指针,不赋初值编译时不报错,在初始化时应说明指针的指向。
static const不能在定义对象时对变量初始化,就是不能用构造函数来初始化。
三、函数的区别
const只能通过构造函数初始化列表进行,并且必须有构造函数。
static const是静态的,属于类的静态成员函数。
四、类的区别
const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的。因为类可以创建多个对象,不同的对象其const数据成员的值可以不同,所以不能在类声明中初始化const数据成员。
static const初始化在类体外进行,初始化时不加该成员的访问权限控制符private,public等,并且初始化时使用作用域运算符来标明它所属类,因此,静态数据成员是类的成员,而不是对象的成员。
4楼:匿名用户
对于c/c++语言来讲,
const就是只读的意思,只在声明中使用;
static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放;
对于全局变量,如果以文件划分作用域的话,此变量只在当前文件可见;对于static函数也是在当前模块内函数可见.
static const 应该就是上面两者的合集.
下面分别说明:
全局:const,只读的全局变量,其值不可修改.
static,规定此全局变量只在当前模块(文件)中可见.
static const,既是只读的,又是只在当前模块中可见的.
文件:文件指针可当作一个变量来看,与上面所说类似.
函数:const,返回只读变量的函数.
static,规定此函数只在当前模块可见.
类:const,一般不修饰类,(在vc6.0中试了一下,修饰类没啥作用)
static,c++中似乎没有静态类这个说法,一般还是拿类当特殊的变量来看.c#中有静态类的详细说明,且用法与普通类大不相同.
5楼:
const 是常量, 也就是只读的, 是一个"右值"
比如 const int iret = 2 ;
iret = 3 ; // 这句是错的, const类型只能在初始化的时候赋值, 之后不能改变
static称为静态变量, static有两种, 一种是在类的成员变量中, 一种是局部变量或全局变量.
在类中的, 用**解释
class exp ;
int main()
类中的static变量的意思是, 在这个类的所有实例中的值都是一样的, 它与const不同, const 只是只读, 在其他方面与不带const的变量没什么区别
还有一种是const全局变量或局部变量, 这两种是相同的, 局部变量的作用域会和全局变量相同
上**:
static int i1 ;
int add(int a, int b)
void main()
还有几点static的特点,(适用于static全局变量或局部变量)
1.static变量在全局数据区分配内存, 也就是 在生成的可执行文件中占一定空间, 这点与全局变量相同
2.static变量只在它所在的源文件中可用. 如果一个项目有很多 .
c或者.cpp文件, static变量可以出现在每一个文件中, 而他们却是不同的, static可以解决许多文件中变量 名字相同的问题.
6楼:高金山
没有static const写法的!
static作用:
1限制范围(函数,变量只能在本文件中使用)2设定变量存储区域(静态存储区域)
const作用:
声明常量,它不能被修改,它存放在常量区
7楼:
static为静态修饰符,可以放在对象前面(函数也是一种对象)如:
class example
} 可直接example.show();去调用这个方法而不用实例化当然也可以定义静态的属性:
public static string str="hello";
但如果这样example.str="helloworld";就出现问题了
也就是客户端可以在任何地方去改变str的值。这样的话极容易产生错误,因为str的值是依靠example类的,随时可以改变。比如再声明一个类:
class class1 }
class example
} 要防止str值发生改变,就需要用到const修饰符public const string str="hello";//str被称为常量
这是如果再对example.str赋值,则编译器将产生错误用常量来保存公共数据是最为合适的。
8楼:匿名用户
const和static const的区别: 多了一个static
static作用:1限制范围(函数,变量只能在本文件中使用)
2设定变量存储区域(静态存储区域)
9楼:匿名用户
这种问题到书中找答案
c#中static和const有什么区别?
10楼:和屋昂黄
static 是静态的修饰符,const是定义常量的修饰符;
const就是只读的意思,只在声明中使用;
static一般有2个作用,规定作用域和存储方式。对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放;
对于全局变量,如果以文件划分作用域的话。此变量只在当前文件可见;
对于static函数也是在当前模块内函数可见。
static为静态修饰符,可以放在对象前面(函数也是一种对象)如:
class example}
可直接example.show();去调用这个方法而不用实例化
当然也可以定义静态的属性:
public static string str="hello";
但如果这样example.str="helloworld";就出现问题了
也就是客户端可以在任何地方去改变str的值。这样的话极容易产生错误,因为str的值是依靠
example类的,随时可以改变。比如再声明一个类:
class class1
}class example
}要防止str值发生改变,就需要用到const修饰符
public const string str="hello";//str被称为常量
这是如果再对example.str赋值,则编译器将产生错误
用常量来保存公共数据是最为合适的。
11楼:百度用户
们都知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等。在多数情况下可以混用。
二者本质的区别在于,const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。而static readonly是在运行时计算出其值的,所以还可以通过静态构造函数来赋值。
明白了这个本质区别,我们就不难看出下面的语句中static readonly和const能否互换了:
1. static readonly myclass myins = new myclass();
2. static readonly myclass myins = null;
3. static readonly a = b * 20;
static readonly b = 10;
4. static readonly int constintarray = new int ;
5. void somefunction()
1:不可以换成const。new操作符是需要执行构造函数的,所以无法在编译期间确定
2:可以换成const。我们也看到,reference类型的常量(除了string)只能是null。
3:可以换成const。我们可以在编译期间很明确的说,a等于200。
4:不可以换成const。道理和1是一样的,虽然看起来1,2,3的数组的确就是一个常量。
5:不可以换成readonly,readonly只能用来修饰类的field,不能修饰局部变量,也不能修饰property等其他类成员。
c语言中与有何区别,c语言中%c与%s的有什么区别?
1楼 匿名用户 在定义变量时 是定义指针 是引用 注 好象c没有引用 例如 int pvar null 定义一个int类型指针int var 0 int pvar var 定义一个引用 并且定义时要指定所引用的对象 在使用时 是解指针 即取其指向的变量的值 是取地址int var 10 int pv...
C语言中与的区别,c语言中“&”与“*”有什么区别?
1楼 匿名用户 是取地址 叫解引用,意思是取地址的内容 举例 int a 3 int b a 这里 表示取a的地址 b就是去b的地址的内容就是3 2楼 诡其辞 s形式表示取变量s的地址 a b形式表示a与b之间进行位与运算。 s形式表示指针变量指向的位置 a b形式 呵呵!不消说了。 3楼 匿名用户...
亦博气垫bb霜n和c有什么区别,IOPE气垫BBN和C什么区别
1楼 大爱诗爽 n是自然色系,遮盖力比较差,但是轻薄 c是遮瑕系列,遮盖力比n的强,不过也不是很厚重。这个看你自己本身的 质地,如果本身 没有瑕疵斑点,比较白皙,建议选择n 如果本身需要遮盖力强的,建议选择c。还有21和23两个色号,根据自己的肤色选择。 2楼 匿名用户 这个粉扑是特别设计的,双层结...