c#string声明问题

cxmin 2009-04-03 09:54:51
我编了一个简单的c#程序,用csc编译一下发现出错。程序如下。
using System;
using System.Collections.Generic;
using System.Text;

class Test
{

//private string str2;

static void Main(string[] args)
{
private string str1 = "Hello World";//不能用private,为什么。
string str2 = str1.Substring(0,1);
Console.WriteLine(str2);
}

}

这是错误提示:
Microsoft (R) Visual C# 2005 编译器 版本 8.00.50727.1433
用于 Microsoft (R) Windows (R) 2005 Framework 版本 2.0.50727
版权所有 (C) Microsoft Corporation 2001-2005。保留所有权利。

testsubstring.cs(20,3): error CS1513: 应输入 }
testsubstring.cs(23,20): error CS1519: 类、结构或接口成员声明中的标记“(”无效
testsubstring.cs(23,25): error CS1519: 类、结构或接口成员声明中的标记“)”无效
testsubstring.cs(26,1): error CS1022: 应输入类型、命名空间定义或文件尾
请按任意键继续. . .
请问各位为什么str1不能声明为私有。不是说C#默认变量为私有吗??
...全文
688 60 打赏 收藏 转发到动态 举报
写回复
用AI写文章
60 条回复
切换为时间正序
请发表友善的回复…
发表回复
AuC 2009-04-04
  • 打赏
  • 举报
回复
楼上的答案都很明显了
所以以后编码的时候要尽量规范些
就不会犯这些非技术上的错误了
teerhu 2009-04-04
  • 打赏
  • 举报
回复
方法里面的变量都是局部变量
deng520159 2009-04-04
  • 打赏
  • 举报
回复
项一下楼主,main是一个静态方法而已, 只有类的成员和方法才能声明访问修饰符的
benjaminwu198818 2009-04-04
  • 打赏
  • 举报
回复
里面调用的规则是:先调用局部变量,若没有局部,才调用全局变量…
spmzfz 2009-04-04
  • 打赏
  • 举报
回复
为什么不查MSDN 呢?
private 关键字是一个成员访问修饰符。私有访问是允许的最低访问级别。私有成员只有在声明它们的类和结构体中才是可访问的。
kkun_3yue3 2009-04-04
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 net_xiaojian 的回复:]
引用 15 楼 xiaozhulo 的回复:

法内都是private,不需要加修饰符了,直接string定义即可,
方法内的变量作用域都在方法内使用,出了方法就访问不到了,so,没有意义,编辑器原生的不支付在方法内使用private,public来修饰,
最简单了,干掉它就OK


这种解释不对吧,既然方法内的变量是private,加上也无妨的,看看资料在回答吧。
[/Quote]


搞笑
不是加上也无妨的问题,不允许是方法内修饰变量的作用域是C#语法的规定,加上后编译不过 ,是visual studio的规定,
难道有本资料上不是这么说的?能给出连接吗?
龙宜坡 2009-04-04
  • 打赏
  • 举报
回复
基础问题
nujiah001 2009-04-04
  • 打赏
  • 举报
回复
变量是局部变量
nujiah001 2009-04-04
  • 打赏
  • 举报
回复
变量是局部变量
「已注销」 2009-04-03
  • 打赏
  • 举报
回复
方法内都是private,不需要加修饰符了,直接string定义即可,
方法内的变量作用域都在方法内使用,出了方法就访问不到了,so,没有意义,编辑器原生的不支付在方法内使用private,public来修饰
guohouchang 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 outengfei 的回复:]
添加static关键字,不能添加访问修饰符
如果类中包含用来开始执行的 Main 方法,则该类的静态构造函数将在调用 Main 方法之前执行。任何带有初始值设定项的静态字段,则在执行该类的静态构造函数时,先要按照文本顺序执行那些初始值设定项
[/Quote]


局部变量不能使用访问修饰符
热学沸腾56 2009-04-03
  • 打赏
  • 举报
回复
函数内部不要使用public private 等等修饰符
llsen 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kkun_3yue3 的回复:]
引用楼主 cxmin 的帖子:
我编了一个简单的c#程序,用csc编译一下发现出错。程序如下。
using System;
using System.Collections.Generic;
using System.Text;

class Test
{

//private string str2;

static void Main(string[] args)
{
private string str1 = "Hello World";//不能用private,为什么。
string str2 = str1.Substring(0,1);
Console.WriteLine(str2);
}

}

这是错误提示:

[/Quote]

using System;
using System.Collections.Generic;
using System.Text;

class Test
{

//private string str2;

static void Main(string[] args)
{
string str1 = "Hello World";//不能用private,为什么。
string str2 = str1.Substring(0,1);
Console.WriteLine(str2);
}

}


private 是修饰类的属性的
不是在这里定义变量的
CSharpEx 2009-04-03
  • 打赏
  • 举报
回复
static void Main(string[] args)
{
string str1 = "Hello World";//不能用private,为什么。 不能加private,没有为什么,规则而已

string str2 = str1.Substring(0,1);
Console.WriteLine(str2);
}
a2110 2009-04-03
  • 打赏
  • 举报
回复
楼主 这个不是string的问题 具体原因大家已经说的很清楚了
烈火蜓蜻 2009-04-03
  • 打赏
  • 举报
回复
在方法内部的变量都是局部变量,加修饰符是没有意义的,所以C#编译器禁止这样的写法
outengfei 2009-04-03
  • 打赏
  • 举报
回复
添加static关键字,不能添加访问修饰符
如果类中包含用来开始执行的 Main 方法,则该类的静态构造函数将在调用 Main 方法之前执行。任何带有初始值设定项的静态字段,则在执行该类的静态构造函数时,先要按照文本顺序执行那些初始值设定项
xiaolukatie 2009-04-03
  • 打赏
  • 举报
回复
函数内声明变量就不要加 private了……
bufan2162 2009-04-03
  • 打赏
  • 举报
回复
頂一下
laobie1004 2009-04-03
  • 打赏
  • 举报
回复
我也来凑个热闹,哈哈!
加载更多回复(40)

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧