在C#中,Java的默认(包)访问权限相当于什么?有吗?反正是否限制对特定命名空间的访问?
问题:
我试图限制对某些方法的访问仅限于我的NUnit测试 - 在JUnit中我会通过使方法包访问并在同一个包中但在src/test/java而不是src/main/java下进行测试来实现这一点.如何在C#中实现类似的功能?
注意:我无法制作方法,internal因为我的测试是在一个单独的程序集中 - 就像NUnit惯例一样 - 或者是它?
我有一个问题,想要一个属性有一个内部getter和一个受保护的setter,如本问题所述,我想我通过执行以下操作解决了这个问题:
public class Accessor : AccessorBase
{
private Connection _connection;
protected void setConnection(Connection value)
{
_connection = value;
}
internal Connection GetConnection()
{
return _connection;
}
...
}
Run Code Online (Sandbox Code Playgroud)
但是,我现在收到此错误:
可访问性不一致:参数类型"连接"比方法"setConnection(连接)"更难访问
这是因为我有internal class Connection.我宁愿不做Connection公开课,同时Accessor 需要公开,所以如何在保持内部getter和受保护的setter的同时解决这个错误呢?
我正在开发一个库,其他程序员将导入并将其用于其目的.
我对Java访问修饰符的目标感到困惑.
问题是我有以下课程
ClassA 在包中 org.mylibraryClassB 在包中 org.mylibrary.internalClassA需要解析ClassB,因此ClassB需要是公共类.
但是,从库用户视图来看,我不打算在我的库外看到ClassB.因为它不应该而且不需要由用户启动.
我想将ClassB移动到包org.mylibrary并使其成为包私有类.
如果我将它移动到同一个包,那将是一个混乱,很难组织,因为我在这个场景中有很多类,所以在一个大包中会有很多.java文件.
通常我将类放在按类别或图层分组的包中,我认为它很容易组织.
我该怎么做呢?人们如何处理这个问题?
请考虑以下代码:
private string _text = null;
private string[] _values = null;
public string Text { get { return _text; } }
public string[] Values { get { return _values; } }
Run Code Online (Sandbox Code Playgroud)
如果仅仅让公众成员不这样做,这又取得了什么成果呢?
Sup人,我有一个简单但有问题的问题.据我所知,static基本上意味着,对于该类的每个单个实例,此方法将是相同的,如果我们更改它,这将为该类的每个单个实例更改,它也称为类方法.好吧,如果我有一个实现toString ()某种格式的方法的类,那么让我们说:
public String toString() {
return "(" + x + "," + y + ")";
}
Run Code Online (Sandbox Code Playgroud)
为什么不能将其设置为静态?由于这种格式对于该类的每个实例都是相同的......?
我知道这适用于许多语言,而不仅仅是Java,但这是我最熟悉的语言.
我理解修饰符的作用以及如何使用它们.我只是想知道,为什么我们需要它们?为什么不能访问每个对象,无论它是否需要?
所以,我可以在Groovy中声明一个类:
//groovy-code
class Person {
}
Run Code Online (Sandbox Code Playgroud)
这相当于用java写的东西:
//java-code
public class Person {
}
Run Code Online (Sandbox Code Playgroud)
只是出于好奇..在java中编码的groovy相当于:
//java-code
class Person {
}
Run Code Online (Sandbox Code Playgroud)
我的意思是有没有办法通过声明没有访问修饰符的东西来实现我在Java中可以实现的目标?
我正在写一个Windows Phone 8.1应用程序(WinRT).
我的用户控件:XAML:
<UserControl x:Name="LoadingProgressBarPage"
x:Class="Project1.Custom.General.UserControls.LoadingOverlayFullScreen"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Merakyahoga.com.Custom.General.UserControls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
Foreground="{x:Null}"
d:DesignHeight="800" d:DesignWidth="480" >
<Grid x:Name="LayoutRoot">
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<StackPanel
Name="LayoutRoot_StackPanelMain"
Grid.Row="1"
Orientation="Vertical">
<ProgressBar Name="ProgressBar"
IsIndeterminate="True"
Foreground="{StaticResource DefaultTheme_DarkBlueColor}"
Height="50"
Width="480"
VerticalAlignment="Center"/>
<StackPanel Name="LayoutRoot_SubStackPanel"
Orientation="Horizontal"
HorizontalAlignment="Center"
VerticalAlignment="Center">
<Image Name="ImageHolder_Main"
Width="54">
</Image>
<TextBlock Name="ProgressBarText"
Text="Please Wait.."
Margin="10,0,0,0"
FontWeight="Normal"
HorizontalAlignment="Center"
FontSize="18"
Foreground="{StaticResource DefaultTheme_DarkBlueColor}" VerticalAlignment="Center"/>
</StackPanel>
</StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)
CS:
namespace Project1.Custom.General.UserControls
{
public partial class LoadingOverlayFullScreen : UserControl
{
public LoadingOverlayFullScreen()
{
InitializeComponent()
//WINRT: …Run Code Online (Sandbox Code Playgroud) 哪个是默认修饰符for x和min
public @interface Anno {
int m() default x;
int x = 10;
}
Run Code Online (Sandbox Code Playgroud)
?
我想上面的代码相当于:
public @interface Anno {
public int m() default x;
public static final int x = 10;
}
Run Code Online (Sandbox Code Playgroud)
修饰语public和public static final冗余,但我没有找到官方解释.
我在这里看:https : //docs.oracle.com/javase/8/docs/technotes/guides/language/annotations.html https://docs.oracle.com/javase/tutorial/java/annotations/index. html http://www.vogella.com/tutorials/JavaAnnotations/article.html
有关于这些修饰符的文档吗?或者有人可以提供"正式"解释吗?
access-modifiers ×10
java ×6
c# ×5
.net ×1
annotations ×1
class ×1
dependencies ×1
groovy ×1
nunit ×1
performance ×1
static ×1
unit-testing ×1
xaml ×1