原来c#中,类定义的花括号后,不用加分号呀,与c++语法差这么大?

wycfgq 2010-01-02 07:27:13
原来c#中,类定义的花括号后,不用加分号呀,与c++语法差这么大?
------------------------------------------------
在c++中,类定义的花括号后必须加上分号:

class myclass
{
//code...
};

但是在c#中,却不能加分号,即:
class myclass
{
//code...
}

没想到区别这么大呀?

...全文
542 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
spmzfz 2010-01-02
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wycfgq 的回复:]
        while (i==0)
            {
                Console.WriteLine("i==0");break;
            };
-----------------------
这个分号,不被认为是while语句的,而被认为是空语句。
[/Quote]

嗯,也可以这样视之,我倒觉得既然是空语句,何必还要加一个分号呢?多余。
倒是定义枚举的后面可加,也可不加分号。
wycfgq 2010-01-02
  • 打赏
  • 举报
回复
while (i==0)
{
Console.WriteLine("i==0");break;
};
-----------------------
这个分号,不被认为是while语句的,而被认为是空语句。
spmzfz 2010-01-02
  • 打赏
  • 举报
回复
怪了,我发现加不加分号,都不报错,都可以,难道c#的语法这么随意吗?

我也觉得有一点点点,呵呵!
如:
enum orientation : byte{north = 1,south = 2,east = 3,west = 4};
enum orientatiog : byte { north = 1, south = 2, east = 3, west = 4 }

int i = 0;
while (i==0)
{
Console.WriteLine("i==0");break;
};

int i = 0;
while (i==0)
{
Console.WriteLine("i==0");break;
}

注:
do{} while (true); do{} while (false )后面必须带分号

sharp_future 2010-01-02
  • 打赏
  • 举报
回复
支持 C#越来越好
huming_h 2010-01-02
  • 打赏
  • 举报
回复
个人感觉c#简洁明了。。。很喜欢
wycfgq 2010-01-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fut20090715 的回复:]
C++也不用啊
[/Quote]
c++没有分号会报错的呀,不信你试试。
  • 打赏
  • 举报
回复
“随意”还是画蛇添足,谁做判断?

反正,不要用c++的有色眼镜来看待别的语言,这就好了。
hello_girls 2010-01-02
  • 打赏
  • 举报
回复
为了实现对c的兼容,c中的struct之后是有分号的。有时候感觉c++真的是c“++”了,呵呵。
至于c#,算是微软对付java的武器吧,java抛弃了类之后有分号的语法,我想c#也应该是没有分号的。
编译器对于分号的解释是可以为空的,甚至可以单独作为一个语句。
所以有的人甚至代码模板的时候,甚至在所有的类定义体,方法体,一个语句块之后都加上一个分号。
wycfgq 2010-01-02
  • 打赏
  • 举报
回复
怪了,我发现加不加分号,都不报错,都可以,难道c#的语法这么随意吗?


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

namespace p86
{
struct route
{
public orientation direction;
public double distince;
};

enum orientation : byte
{
north = 1,
south = 2,
east = 3,
west = 4
};


class Program
{
static void Main(string[] args)
{
route myRoute;
int myDirection = -1;
double myDistince;
Console.WriteLine("1)north\n 2)south\n 3)east\n 4)west");
do
{
Console.WriteLine("select a direction:");
myDirection=Convert.ToInt32(Console.ReadLine());

}
while ((myDirection<1) || (myDirection>4));

Console.WriteLine("input a distince:");
myDistince = Convert.ToDouble(Console.ReadLine());
myRoute.direction = (orientation)myDirection;
myRoute.distince = myDistince;
Console.WriteLine("myrote specifies a direction of {0} and a "+"distance of {1}",myRoute.direction,myRoute.distince );
Console.ReadKey();
}
};
}

cyj85593979 2010-01-02
  • 打赏
  • 举报
回复
语法没差多少
fut20090715 2010-01-02
  • 打赏
  • 举报
回复
C++也不用啊
C#在Microsoft.net初始版本心位置,是Microsoft公司开发的一种最新的面向对象编程语言,它结合了C++的强大功能和Visual Basic的易用性。本书分为三部分来帮助读者学习C#语言。第一部分提供了对C#语言的全面讨论,描述了C#语言里定义的关键字、语句和特性。同时介绍了I/O、文件处理、映射和预处理程序。第二部分讨论了C#库,它也是.NET框架库。由于篇幅有限,本书重点讲述了包含在系统名字空间里的核心库,这部分的内容几乎每个C#程序员都会用到。第三部分包括C#应用的实例。 本书内容由浅及深,适用范围广,同时适用于没有编程经验的读者和对C++或Java有一定基础的程序员。 目录如下: 第一部分 C#语言 第1章 C#的起源 1.1 C#发展史 1.2 C#如何与.NET框架相关 1.3 通用语言运行时工作原理 1.4 可管理代码和不可管理代码 第2章 C#概述 2.1 面向对象程序设计 2.2 第一个简单程序 2.3 处理语法错误 2.4 一点小改进 2.5 第二个简单程序 2.6 另一种数据型 2.7 两个控制语句 2.8 使用代码块 2.9 分和定位 2.10 缩进 2.11 标识符 2.12 C#库 第3章 数据型、直接量和变量 3.1 数据型的重要性 3.2 C#的数值型 3.3 整数型 3.4 浮点型 3.5 decimal型 3.6 字符 3.7 bool型 3.8 部分输出选项 3.9 直接量 3.10 变量 3.11 变量的作用域和使用期限 3.12 型转换和强制转换 3.13 表达式型转换 第4章 运算符 4.1 算术运算符 4.2 关系运算符和逻辑运算符 4.3 赋值运算符 4.4 位运算符 4.5 ?运算符 4.6 间隔和 4.7 运算符优先级 第5章 程序控制语句 5.1 if语句 5.2 switch语句 5.3 for循环 5.4 while循环 5.5 do-while循环 5.6 foreach循环 5.7 使用break语句退出循环 5.8 continue语句 5.9 goto语句 第6章 、对象和方法 6.1 基础 6.2 如何创建对象 6.3 引用变量和赋值 6.4 方法 6.5 构造函数 6.6 new运算符 6.7 无用单元收集和析构函数 6.8 this关键字 第7章 数组和字符串 7.1 数组 7.2 多维数组 7.3 非齐整数组 7.4 分配数组引用 7.5 Length属性 7.6 foreach循环 7.7 字符串 第8章 方法和 8.1 控制对成员的访问 8.2 给方法传递对象 8.3 ref参数和out参数 8.4 变元个数可变 8.5 返回对象 8.6 方法重载 8.7 重载构造函数 8.8 Main()方法 8.9 递归 8.10 static关键字 第9章 运算符重载 9.1 运算符重载基础 9.2 处理C#内部型的运算 9.3 重载关系运算符 9.4 重载true和false 9.5 重载逻辑运算符 9.6 转换运算符 9.7 运算符重载提示和限制 9.8 运算符重载的另一个示例 第10章 索引和属性 10.1 索引 10.2 属性 10.3 使用索引和属性 第11章 继承 11.1 继承基础 11.2 成员访问和继承 11.3 构造函数和继承 11.4 继承和名称隐藏 11.5 创建多级层次结构 11.6 何时调用构造函数 11.7 基引用和派生对象 11.8 虚方法和过载 11.9 使用抽象 11.10 使用sealed来防止继承 11.11 object 第12章 接口、结构和枚举 12.1 接口 12.2 使用接口引用 12.3 接口属性 12.4 接口索引 12.5 接口能够被继承 12.6 接口继承引起名称隐藏 12.7 显式实现 12.8 在接口和抽象选择 12.9 .NET标准接口 12.10 接口的实例研究 12.11 结构 12.12 枚举 第13章 异常处理 13.1 System.Exception 13.2 异常处理基础 13.3 未捕捉异常的后果 13.4 异常允许合理处理错误 13.5 使用多个catch语句 13.6 捕捉所有异常 13.7 嵌套try模块 13.8 抛出异常 13.9 finally语句 13.10 详细分析异常 13.11 派生异常 13.12 捕捉派生异常 13.13 checked语句和unchecked语句 第14章 输入和输出 14.1 C#的I/O依赖于数据流 14.2 数据流 14.3 控制台I/O 14.4 文件数据流和面向字节文件I/O 14.5 基于字符的文件I/O 14.6 重定向标准数据流 14.7 读写二进制数据 14.8 随机存取文件 14.9 MemoryStream 14.10 StringReader和StringWriter 14.11 将数字串转换为其内部表示 第15章 代理和事件 15.1 代理 15.2 事件 15.3 .NET事件原则 15.4 应用事件:实例研究 第16章 名字空间、预处理程序和程序集 16.1 名字空间 16.2 预处理程序 16.3 程序集和internal访问修饰符 第17章 运行时型ID、映射和属性 17.1 运行时型标识 17.2 映射 17.3 使用映射 17.4 属性 17.5 使用内建属性 第18章 不安全代码、指针和其他主题 18.1 不安全代码 18.2 其他关键字 18.3 const和volatile 第二部分 C#库 第19章 System名字空间 19.1 System的成员 19.2 Math 19.3 数值型的结构 19.4 Array 19.5 BitConverter 19.6 用Random产生随机数 19.7 内存管理和GC 19.8 Object 19.9 IComparable接口 19.10 IConvertible接口 19.11 ICloneable接口 19.12 IFormatProvider接口和IFormattable接口 第20章 字符串和格式化 20.1 C#的字符串 20.2 String 20.3 格式化 20.4 使用String.Format()和ToString()格式化数据 20.5 创建自定义数字格式 20.6 格式化日期和时间 20.7 格式化枚举 第21章 多线程程序设计 21.1 多线程基础 21.2 Thread 21.3 确定线程结束时间 21.4 IsBackground属性 21.5 线程优先级 21.6 同步 21.7 使用Wait()、Pulse()和PulseAll()进行线程通信 21.8 MethodImplAttribute属性 21.9 挂起、继续和停止线程 21.10 确定线程状态 21.11 使用主线程 21.12 多线程提示 21.13 开启独立任务 第22章 集合 22.1 集合的概述 22.2 集合接口 22.3 DictionaryEntry结构 22.4 通用集合 22.5 使用BitArray来存储位 22.6 专用集合 22.7 通过计数器访问集合 22.8 在集合存储用户自定义 22.9 小结 第23章 通过Internet联网 23.1 System.Net的成员 23.2 统一资源标识符 23.3 Internet访问基础 23.4 处理网络错误 23.5 Uri 23.6 访问附加的HTTP响应信息 23.7 MiniCrawler:实例研究 23.8 使用WebClient 第三部分 应用C# 第24章 建立组件 24.1 组件的概念 24.2 C#组件的概念 24.3 IComponent接口 24.4 Component 24.5 一个简单组件 24.6 重载Dispose() 24.7 利用using语句 24.8 容器 24.9 组件是程序设计的未来 第25章 创建基于窗体的Windows应用程序 25.1 Windows程序设计简史 25.2 编写基于窗体的Windows应用程序的两种方式 25.3 Windows与用户交互操作的方法 25.4 Windows窗体 25.5 基于窗体的Windows框架程序 25.6 添加按钮 25.7 消息处理 25.8 使用消息框 25.9 添加菜单 25.10 小结 第26章 递归表达式分析程序 26.1 表达式 26.2 分析表达式:存在的问题 26.3 分析表达式 26.4 剖析表达式 26.5 一个简单的表达式分析程序 26.6 向分析程序添加变量 26.7 递归分析程序语法检查 26.8 一些尝试 附录A XML注释快速参考 附录B C#和机器人技术

111,120

社区成员

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

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

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