我现在正在上C#课程,我正在努力寻找最好的做事方式.我来自Java背景,因此我只熟悉Java最佳实践; 我是C#新手!
在Java中,如果我有私有财产,我会这样做;
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
Run Code Online (Sandbox Code Playgroud)
在C#中,我看到有很多方法可以做到这一点.
我可以像Java一样做:
private string name;
public void setName(string name) {
this.name = name;
}
public string getName() {
return this.name;
}
Run Code Online (Sandbox Code Playgroud)
或者我可以这样做:
private string name;
public string Name {
get { return name; }
set { name = value; }
}
Run Code Online (Sandbox Code Playgroud)
要么:
public string Name { get; set; }
Run Code Online (Sandbox Code Playgroud)
我应该使用哪一个,每种方法涉及哪些警告或细微之处?在创建类时,我遵循我从Java中了解的一般最佳实践(特别是阅读Effective Java).因此,例如,我赞成不变性(仅在必要时提供setter).我很想知道这些实践如何适应C#中提供setter和getter的各种方法; 基本上,我如何将Java世界的最佳实践转换为C#?
编辑
我发布这篇文章是对Jon Skeet答案的评论,但后来很久了:
那么一个非平凡的财产(也许,可能有重要的处理和验证)?我是否仍然可以通过公共属性公开它,但是逻辑封装在get和 …
我发现很少有关于将现有数据库从加密密码转换为哈希密码的信息.(我能够找到关于转换另一种方式的更多信息,但它没有多大帮助.)
正如大多数人所知,更改passwordFormatweb.config中的设置只会影响新用户.我有一个包含几百个用户的数据库,我想将它们转换为使用散列密码而不更改现有密码.
是否有其他人熟悉如何处理这个问题?谢谢你的任何提示.
我可以在iPad上运行Java应用程序(Java Web Start)吗?
看起来这是不可能的,但有人建议使用Cloud Browse(我找不到的应用程序)来运行Java.
有解决方案吗
UPDATE:云浏览器是一个应用程序是可以在App Store,但它已被删除我的苹果.Cloud Browse将在外部处理网站,然后将网站内容流式传输到iPad屏幕(类似于视频流).
此代码返回0个不正确的对象.但是,删除谓词时,获取请求将返回所有对象.
NSError *error = nil;
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:[self managedObjectContext]];
NSPredicate * pr = [NSPredicate predicateWithFormat:@"%K beginswith '%@' ",
@"FullName", searchText];
//NSPredicate * pr = [NSPredicate predicateWithFormat:@"PersonID == %@", searchText]; Works fine
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:entityDescription];
[request setPredicate:pr];
NSArray * arr = [[self managedObjectContext] executeFetchRequest:request error:&error];
Run Code Online (Sandbox Code Playgroud)
FullName属性包含unicode数据(阿拉伯语).
任何帮助表示赞赏.
如果我com.example.test.Enum2.Test在下面的代码中有一个类,为什么getCanonicalName()返回com.example.test.Enum2.Test但Class.forName()需要"com.example.test.Enum2$Test"作为参数?
有没有办法保持一致,这样我可以通过名称序列化/反序列化枚举值,而不必检查每个$vs .可能性,当枚举是一个嵌套类?
package com.example.test;
import java.util.Arrays;
public class Enum2 {
enum Test {
FOO, BAR, BAZ;
}
public static void main(String[] args) {
for (String className : Arrays.asList(
"com.example.test.Enum2.Test",
"com.example.test.Enum2$Test"))
{
try {
Class<?> cl = Class.forName(className);
System.out.println(className+" found: "+cl.getCanonicalName());
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
System.out.println(Test.FOO.getDeclaringClass().getCanonicalName());
}
}
Run Code Online (Sandbox Code Playgroud)
澄清:我正在寻找一种在实际应用中处理这个问题的好方法(不仅仅是上面提到的测试用例),或者:
一个.使用getCanonicalName()输出序列化/反序列化(仅点缀名称),并Class.forName()依次尝试每种可能性,例如"com.example.test.Enum2.Test",然后"com.example.test.Enum2$Test",然后"com.example.test$Enum2$Test",等等.
湾 使用正确的$表示法,这样 …
我想创建类(Object.class)类的哈希映射.我想知道是否
Object.class被认为等于另一个Object.class?
可以有另一个Object.class实例导致它有不同的哈希码吗?
我有一组数据<testData>,里面有很多节点.
如何检测节点是否存在?
我试过了
<xsl:if test="/testData">
Run Code Online (Sandbox Code Playgroud)
和
<xsl:if test="../testData">
Run Code Online (Sandbox Code Playgroud)
两者都不起作用.我确信这是可能的,但我不确定如何.:P
对于上下文,XML文件的布局如下
<overall>
<body/>
<state/>
<data/>(the one I want access to
</overall>
Run Code Online (Sandbox Code Playgroud)
我目前在<body>标签中,但我想全球访问它.不应该/overall/data工作?
编辑2: 现在我有一个数据索引,我需要在将模板应用到body内部的标签时随时使用.在身体中,如何判断数据是否存在?有时确实如此,有时却没有.无法真正控制那个.:)
所以我经常将jquery文档就绪函数放在我的html底部,只是为了让它在页面的所有元素加载之前运行.我已经厌倦了我的功能无法工作,因为资源没有在页面上完成加载,jquery.ready一直说这些元素在它们不合时完成加载!谁想要设置一个300毫秒的超时,以便他们的功能在jquery.ready之后稍微等一下?
我正在制作一个应用程序,我必须在其中更改UI programmaticaly.我需要更改layout_height和layout_widthXML属性.
但是,当我使用该setLayoutParams方法时,应用程序运行,然后我发出一条消息,表示它意外停止工作,我必须强制关闭.
我也尝试过设置LayoutParams ViewGroup.LayoutParams.但没有任何作用.请查看附加的代码和指南.
这是Java代码.
private void fixLayoutVmain(){
ListView lv;
ImageButton rev,stop,play,forw;
lv=(ListView)findViewById(R.id.ListMain);
rev=(ImageButton)findViewById(R.id.rev);
stop=(ImageButton)findViewById(R.id.stop);
play=(ImageButton)findViewById(R.id.plpa);
forw=(ImageButton)findViewById(R.id.forw);
Log.d("DEV1","ID's have been assigned");
LayoutParams lp=new LayoutParams(W, ((75*H)/100));
Log.d("DEV1","param object created");
lv.setLayoutParams(lp);
Log.d("DEV1","ListView param set");
lp.height=(int)(10*H)/100;
lp.width=(int)(10*H)/100;
Log.d("DEV1","Changes to param made");
rev.setLayoutParams(lp);
Log.d("DEV1","Reverse Button param applied");
stop.setLayoutParams(lp);
Log.d("DEV1","Stop button param applied");
play.setLayoutParams(lp);
Log.d("DEV1","forward button param applied");
forw.setLayoutParams(lp);
Log.d("DEV1","All imagebutton changes have been made");
}
Run Code Online (Sandbox Code Playgroud)
这是XML文件
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListVieW
android:id="@+id/ListMain"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<LinearLayout …Run Code Online (Sandbox Code Playgroud) java ×4
android ×1
asp.net ×1
c# ×1
core-data ×1
ios ×1
ipad ×1
iphone ×1
javascript ×1
jquery ×1
nested-class ×1
nspredicate ×1
passwords ×1
properties ×1
reflection ×1
ruby ×1
rvm ×1
textmate ×1
xpath ×1
xslt ×1