我看过一些代码并认为它似乎有问题,所以我想知道它是否可以用于良好的编码,我的第一个想法是不。
考虑:
class MyClass
{
private string m_MySuperString;
public string MySuperString
{
get { return m_MySuperString; }
set { m_MySuperString = value; }
}
public void MyMethod()
{
if (blah != yada)
{
m_MySuperString = badabing;
}
}
public void MyOtherMethod()
{
if (blah == yada)
{
m_MySuperString = badaboom;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这种对支持字段的直接访问是一种可以接受的做法还是糟糕的编码 - 或者我应该问一下属性访问器的意义是什么,如果这是在具有公共成员的类中内部完成的,则访问被多个允许组件 - 是否可能发生崩溃 - 我会在多线程应用程序中冒险应该会发生崩溃。
请问有什么想法吗?我已经看过这个关于 SO 和其他人的链接> 为什么使用私有成员然后使用公共属性来设置它们?
编辑
让我说清楚,因为提供了很好的信息,而不是直接回复所有答案和评论。我不是在问属性的用途,也不是我是否可以执行自动实现的属性、私有设置器、OnValueChange 通知、属性逻辑。我的问题是关于直接访问该支持字段 - 例如,如果您说的是多线程场景 - 不是 getter/setter 同步锁的全部重点 - 控制对 backingfield 的访问?在这种情况下,这种代码是否可以接受 - …
我正在使用Visual Studio Community Edition(本地开发计算机),我有一个Bonobo Git Server设置并在一台单独的机器上运行.我试图通过Visual Studio连接到服务器 - 但在某个地方我失败了.VS2015有本地Git - 但我的Bonobo Git服务器位于我们域中的本地实例服务器上.我如何指向VS2015 Connections,我正在寻找在线扩展,但到目前为止,我绘制了在本地开发机器上工作的空白和组件.请继续关注这个问题 - 我不想要团队服务器我,我不想要github; 我正在寻找我的问题的答案,而不是其他一些服务或其他一些东西.
我正在尝试以编程方式向绑定源添加新行。我知道调用 bsSource.AddNew() 添加一个新行,我将其转换为 DataRowView 并设置我的值。我的问题是 - DataRowView.Row 显示 RowState 为 detached。我不希望它被分离;我相信它应该显示已添加 - 我也不希望它提交对数据库的更改(有一个非常有效的理由)。我想稍后选择时间。我的代码如下:
private Sub AddToRelationSource(binID As Integer, gradeID As Integer, IsChecked As Boolean)
Dim drv As DataRowView = DirectCast(bsBinGrades.AddNew(), DataRowView)
drv.Row("IsSelected") = IsChecked
drv.Row("BinID") = binID
drv.Row("GradeID") = gradeID
' I tried drv.EmdEdit(0 drv.Row.EndEdit() - Row State still shows detached
End Sub
Run Code Online (Sandbox Code Playgroud) 我一直在NET和SO中寻找一些答案 - 我对实体框架几乎是一个菜鸟..所以我对相关实体确实有一些困惑..我正在使用 C# , Winforms , Linq , EF6^ (生成的反向数据库类在 DAL 项目中)
我很难解决这个问题。我有 3 个表,它们与第四个表相关 - 第 4 个表使用其他 3 个表中的 PK_ID 列 - 配置为外键,它们还组成了复合键(主键)。
我的粗略 ER 图。
我需要在 EF 查询中做的是获取多个列以将数据绑定绑定到列表视图。
我想要的列是 EnumerationCode、Part.Number、Part.Description。
我将使用 ProdID (我将 Products 绑定到 DropDown )作为这些附加值的 getter。
所以基本上我想到了这一点 Select From TernaryTable T Join EnumID on ENumTable.EnumID where T.ProdID = myProdID order by EnumCode [Join this to Select Part.Number, Part.Description From PartID = TernaryTable.PartID )
我认为可能有一个简单的解决方案来获取这些数据,然后如何保存对数据的任何更改 - 但正如我所说,我迷失了。
我需要两种方法,一种是获取数据,另一种是保存数据发生的任何更改。
我读过这个
我有一个运行的Power Shell脚本来停止服务,“停止/终止进程”,删除2个文件然后重新启动。
我可以在Windows 10 64位主机上完美运行此脚本-出现零问题。我尝试在我的虚拟机中运行它,但出现错误
无法加载,因为此系统上禁用了运行脚本。有关更多信息,请参阅https://go.microsoft.com/fwlink/?LinkID=135170上的about_Execution_Policies。
因此,只是为了咯咯笑,我去看了我的组策略,但它们都没有在两台计算机上配置。
管理模板> Windows组件>未配置Windows PowerShell。
那么,为什么在虚拟机上而不是在主机上出现问题?
编辑 Ran的Get-ExecutionPolicy以及VM受限的Get-ExecutionPolicy-List
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Undefined
Run Code Online (Sandbox Code Playgroud)
在我的主机上运行
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Unrestricted
Run Code Online (Sandbox Code Playgroud)
我不知道如何更改本地计算机-软件安装?
c# ×2
coding-style ×1
datarow ×1
datarowview ×1
git ×1
linq ×1
powershell ×1
properties ×1
relationship ×1
standards ×1
vb.net ×1
winforms ×1