在C#UI代码中,当我创建事件方法时,它会自动填充
void simpleButton_click(object sender, Eventargs e)
{
}
这个简单的void
和private void
之间有什么区别?
答案 0 :(得分:10)
没有,这是语法上的。默认情况下,成员为private
,而类型为internal
)。
为了保持一致性,人们通常会添加private
,尤其是当它位于具有许多其他具有不同访问属性的成员的类或类型中时,例如protected internal
或public
。 / p>
所以以下两个文件是等价的:
using System;
namespace Foo
{
class Car : IVehicle
{
Car(String make)
{
this.Make = make;
}
String Make { get; set; }
CarEngine Engine { get; set; }
void TurnIgnition()
{
this.Engine.EngageStarterMotor();
}
class CarEngine
{
Int32 Cylinders { get; set; }
void EngageStarterMotor()
{
}
}
delegate void SomeOtherAction(Int32 x);
// The operator overloads won't compile as they must be public.
static Boolean operator==(Car left, Car right) { return false; }
static Boolean operator!=(Car left, Car right) { return true; }
}
struct Bicycle : IVehicle
{
String Model { get; set; }
}
interface IVehicle
{
void Move();
}
delegate void SomeAction(Int32 x);
}
using System;
namespace Foo
{
internal class Car : IVehicle
{
private Car(String make)
{
this.Make = make;
}
private String Make { get; set; }
private CarEngine Engine { get; set; }
private void TurnIgnition()
{
this.Engine.EngageStarterMotor();
}
private class CarEngine
{
private Int32 Cylinders { get; set; }
private void EngageStarterMotor()
{
}
}
private delegate void SomeOtherAction(Int32 x);
public static Boolean operator==(Car left, Car right) { return false; }
public static Boolean operator!=(Car left, Car right) { return true; }
}
internal struct Bicycle : IVehicle
{
private String Model { get; set; }
}
internal interface IVehicle
{
public void Move(); // this is a compile error as interface members cannot have access modifiers
}
internal delegate void SomeAction(Int32 x);
}
规则摘要:
class
中定义的类型(struct
,enum
,delegate
,interface
,namespace
)为internal
默认情况下。private
,但有两个例外:
public static
运算符重载。如果您没有提供明确的public
访问修饰符,则会出现编译错误。public
,您无法提供显式访问修饰符。class
和struct
成员默认为private
,与C ++不同,默认情况下struct
为public
且class
默认为private
。protected
或protected internal
。internal
类型和成员对另一个程序集内的代码可见。 C#需要[assembly: InternalsVisibleTo]
属性才能实现此目的。这与C ++的friend
功能不同(C ++的friend
允许class
/ struct
列出其他可以访问其的类,结构和自由函数private
成员)。答案 1 :(得分:-3)
void 表示将此代码块或过程标识为方法,或者它不会返回任何值。如果您看到任何类型而不是void意味着被阻止的代码或过程是函数或属性
这是方法
private void DoSomething()
{
...code
}
这是功能
private int DoSomething()
{
..code
return 1
}
私有表示方法,函数或属性无法访问到类外部,但可以在类本身内部调用
public 表示方法,函数或属性可访问到类外部,也可以在类本身内部调用