C#函数声明出现public修饰符对该项无效报错的原因是什么
报错原因说明
该报错是C#语法规则限制导致的:
- 你定义在
Main方法内部的sayMeow属于本地函数(Local Function),C#规范明确规定本地函数禁止使用任何访问修饰符(包括public/private/protected/internal)。 - 访问修饰符的作用是控制类型(类、结构体、接口等)或类型成员的对外可见范围,而本地函数的作用域被严格限定在它所属的上层方法内部,仅能在该上层方法内被调用,本身不需要做访问权限控制,添加访问修饰符属于无效语法,因此编译器会抛出对应错误。
- 移除
public修饰符后,完全符合本地函数的语法要求,因此代码可以正常运行。
如果你确实需要为sayMeow添加public修饰符,可以将其移出Main方法,作为Program类的成员方法,写法参考如下:
using System; namespace c__class { class Program { // 作为类成员方法,可添加public修饰符 public static void sayMeow (ref string purr) { purr = "meow meow"; Console.WriteLine("purr"); } static void Main(string[] args) { string meow = "meow"; sayMeow(ref meow); Console.WriteLine(meow); } } }
内容的提问来源于stack exchange,提问作者Elad Krakover
相关产品推荐
相关产品推荐

