我尝试从另一个类调用一个方法.我添加了引用并找到了类.我可以调用这个类的一些方法但是我不能调用这个类中的所有方法.
主类是public partial class和我想要使用的方法的类private static class.我尝试调用的方法是public static.我可以调用的方法和我不能调用的方法没有区别.这是我不明白的问题.请有人解释一下吗?
namespace MyNamespace2
{
private static class MyClass
{
public static void MyMethod() { }
}
}
namespace MyNamespace1
{
class Program
{
static void Main(string[] args)
{
//can't call
MyClass.MyMethod();
}
}
}
Run Code Online (Sandbox Code Playgroud) 我记得默认情况下该接口是公共的。我错了吗?当我尝试从接口实现“公共静态”方法时。VS告诉我,该接口中的方法比“公共静态”方法更难访问。当我将public添加到接口时,它已修复。默认情况下,接口不是公开的吗?
interface IDoubleFloatEventInvoker {
void AddListener(EventName eventName, UnityAction<float, float> unityAction);
}
public static void AddInvoker(EventName eventName, IDoubleFloatEventInvoker invoker)
{
foreach (UnityAction<float, float> listener in doubleFloatListeners[eventName])
{
invoker.AddListener(eventName, listener);
}
doubleFloatInvokers[eventName].Add(invoker);
}
Run Code Online (Sandbox Code Playgroud)
“ VS说IDoubleFloatEventInvoker比AddInvoker函数更难访问”
如何创建不可变的星球以便名称不会改变?我很挣扎,因为我认为这是具有可变对象的不可变项目。如果我错了请纠正我。
每次我更改输出中的名称也会更改。我错过了什么吗?
我尝试将所有字段设为私有和最终(不在本例中),但我认为我缺少一些工作代码。
我知道 java.util.Date 已被弃用,但这只是示例。
import java.util.Date;
public final class Planet {
String name;
private final Date discoveryDate;
public Planet (String name, Date discoveryDate) {
this.name = name;
this.discoveryDate = new Date(discoveryDate.getTime());
}
public String getName()
return name;
}
public Date getDiscoveryDate() {
return new Date(discoveryDate.getTime());
}
public static void main(String [] args) {
Planet Earth = new Planet("Earth Planet", new Date(2020,01,16,17,28));
System.out.println("Earth");
System.out.println("------------------------------------");
System.out.println("Earth.getName: " + Earth.getName());
System.out.println("Earth.getDiscoveryDate: " + Earth.getDiscoveryDate());
}
}
Run Code Online (Sandbox Code Playgroud) 编辑修复标记为重复或更清楚为什么它似乎是重复.当时我不知道那个包和默认在哪里,因此这个帖子的原因相同.
现在我正在准备我的Java考试的考试问题,我有一个问题,要求我解释访问修饰符,并询问我有关修饰符的问题.
我可以找到有关私有,受保护,公共和默认的信息,但无法在Package上找到任何内容.
有人可以给我一个答案或链接我一篇关于它的文章吗?
在Java中,有没有办法让一个访问修饰符基本上是私有的,除了这个方法可以被孩子访问?我正在开发一个程序,其中有一些方法是某个类的孩子需要的(并且希望避免重复),但我不想公开,因为我不希望这些幼稚类的对象是实例化以访问这些方法.
如果没有这样的事情,你们会建议在这个问题上实现最佳实践?
优选地,在同一包装中 - protected不满足此要求.
我认为这是不可能的,但不知何故你可以添加修饰符以enum不同于public.
这段代码工作得很好,并充当实际的私有成员(在包含 class 之外无法访问C:
namespace N {
public class C {
private enum E { ... }
}
}
Run Code Online (Sandbox Code Playgroud)
简短回答:尽可能少的访问(参见 Jon Skeet 的回答)。
长答案:
非嵌套类型、枚举和委托可访问性(可能只有内部或公共可访问性)
Run Code Online (Sandbox Code Playgroud)| Default | Permitted declared accessibilities ------------------------------------------------------------------ namespace | public | none (always implicitly public) enum | public | none (always implicitly public) interface | internal | public, internal class | internal | public, internal struct | internal | …
研究:我已经阅读了MSDN C# Access Modifiers 参考,它提供了定义,但例子很少。这些定义是正确的,但如果在图表中直观地呈现它们会更容易理解。搜索 SO 我发现了几个问题,讨论了使用修饰符的特殊情况,或者将一个修饰符与另一个进行比较,但不是所有的修饰符,也不是视觉上的。我还在网上搜索了“C# Access Modifier Diagrams”并找到了这个快速参考,其中包含一些示例和图表,但并不像我希望的那样清晰。我无法找到此信息的多合一来源。
问题 我想找到 C# 访问修饰符的多合一指南,该指南使用定义、代码示例和可视化辅助工具(例如图表)显示以下内容。