这就是我需要做的事情:
object foo = GetFoo();
Type t = typeof(BarType);
(foo as t).FunctionThatExistsInBarType();
Run Code Online (Sandbox Code Playgroud)
可以这样做吗?
我有一个Powershell脚本,可以将文件从一个位置复制到另一个位置.复制完成后,我想清除源位置中已复制文件的存档属性.
如何使用Powershell清除文件的Archive属性?
我现在在我的代码中使用ReentrantReadWriteLock来同步对树状结构的访问.这个结构很大,并且很多线程一次读取,偶尔会对它的一小部分进行修改 - 所以它似乎很适合读写习惯用法.我理解,对于这个特定的类,不能将读锁提升到写锁,因此根据Javadoc,必须在获得写锁之前释放读锁.我以前在非重入上下文中成功使用了这种模式.
然而,我发现我无法永久地阻止写入锁定.由于读锁是可重入的,我实际上正在使用它,简单的代码
lock.getReadLock().unlock();
lock.getWriteLock().lock()Run Code Online (Sandbox Code Playgroud)
如果我已经重新获得了重新锁定,则可以阻止.每次解锁调用只会减少保持计数,并且仅在保持计数达到零时才实际释放锁定.
编辑澄清这一点,因为我认为我最初没有解释得太清楚 - 我知道这个类中没有内置的锁升级,我必须简单地释放读锁并获得写锁.我的问题是,无论其他线程正在做什么,如果它重新获取它,调用getReadLock().unlock()可能实际上不会释放此线程对锁定的保持,在这种情况下,调用getWriteLock().lock()将永远阻塞,因为此线程仍然保持读取锁定,从而阻止自己.
例如,即使在没有其他线程访问锁的情况下运行单线程时,此代码段也永远不会到达println语句:
final ReadWriteLock lock = new ReentrantReadWriteLock();
lock.getReadLock().lock();
// In real code we would go call other methods that end up calling back and
// thus locking again
lock.getReadLock().lock();
// Now we do some stuff and realise we need to write so try to escalate the
// lock as per the Javadocs and the above description
lock.getReadLock().unlock(); // Does not actually …Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用C#而且对我而言,似乎微软称他们的新系统为.Net,因为你必须使用互联网来查找所有内容以找到有用的功能以及它们将它藏在哪个类中.
对我来说,要求编写和设计独立的程序/函数(非实例化的静态对象)使它们的类不能作为它们的命名空间似乎是荒谬的.
那就是为什么我不能使用Write或WriteLine而不是Console.WriteLine?
然后,当我开始习惯我正在使用的对象(如字符串)知道如何执行操作时,我习惯使用外部函数来实现(比如upper,tolower,substring等),他们改变了规则数字,数字由于某种原因不知道如何将自己从一种数字类型转换为另一种数字类型,而是必须调用Convert类静态函数将double更改为int和Math类静态函数以实现舍入和截断..快速将您的简单(在其他语言中)语句转换为C#中的大量字符行.
它似乎也沉迷于强类型,它在我编码时会干扰思考过程.我知道类型安全性可以减少错误,但我认为它也会增加复杂性,有时会增加不必要的程度.如果您可以在没有显式的Casting或Converting或ToStringing的情况下选择上下文驱动的类型,这似乎是C#的基本必需品,以完成任务.
那么......是否有可能在记事本中编写有意义的代码并使用cl而无需访问Internet?如果不使用自动完成和网络访问,您会使用什么参考书?
有关平滑这种语言并更自然地使用它的过程的任何建议吗?
我想使用Java将gif图像转换为jpeg.它适用于大多数图像,但我有一个简单的透明gif图像:
输入gif图像http://img292.imageshack.us/img292/2103/indexedtestal7.gif
[如果图像丢失:它是一个蓝色圆圈,周围有透明像素]
当我使用以下代码转换此图像时:
File file = new File("indexed_test.gif");
BufferedImage image = ImageIO.read(file);
File f = new File("indexed_test.jpg");
ImageIO.write(image, "jpg", f);
Run Code Online (Sandbox Code Playgroud)
此代码可以在不抛出异常的情况下工作,但会导致无效的jpeg图像:
[如果图像丢失:IE无法显示jpeg,Firefox会显示无效颜色的图像.]
我正在使用Java 1.5.
我还尝试使用gimp将示例gif转换为png并使用png作为Java代码的输入.结果是一样的.
这是JDK中的错误吗?如何在没有第三方库的情况下正确转换图像?
更新:
答案表明jpeg转换无法正确处理透明度(我仍然认为这是一个错误)并建议使用预定义颜色替换透明像素的解决方法.这两种建议的方法都非常复杂,所以我实现了一个更简单的方法(将作为答案发布).我接受了第一个已发布的答案(Markus).我不知道哪种实现更好.我选择了最简单的一个,但我发现它不起作用的gif.
最近我使用谓词来描述搜索逻辑并将其传递给一些列表的Find方法.
foreach (IHiscoreBarItemView item in _view.HiscoreItems)
{
Predicate<Hiscore> matchOfHiscoreName =
(h) => h.Information.Name.Equals(item.HiscoreName);
var current = player.Hiscores.Find(matchOfHiscoreName);
item.GetLogicEngine().ForceSetHiscoreValue(current as Skill);
var goal = player.Goals.Find(matchOfHiscoreName);
item.GetLogicEngine().ForceSetGoalHiscoreValue(goal as Skill);
}
Run Code Online (Sandbox Code Playgroud)
除了"更少的代码"之外,使用上述方法替代替代方案是否有任何好处.
我对表现特别感兴趣.
谢谢
我的Windows应用程序接受args,我使用它来设置Window行为
问题是我需要在一些参数中传递文本,但我的应用程序将其视为多个args,所以,这个:
"http://www.google.com/" contact 450 300 false "Contact Info" true "Stay Visible" true
Run Code Online (Sandbox Code Playgroud)
实际上有11个参数而不是我期待的9 个参数.
将"联系信息"和"保持可见"作为唯一参数传递的诀窍是什么?
我正在尝试为我的应用程序设计一个 XML 文档结构。
我想存储如下的孔列表
<Holes>
<Hole id='1' dia='0.1' depth='2'/>
<Hole id='2' dia='0.2' depth='1.67'/>
<Hole id='3' dia='0.3' depth='0.44'/>
</Holes>
Run Code Online (Sandbox Code Playgroud)
在我文档的另一部分中,我想通过 id 来引用一个洞。例如
<Drill useHoleWithId='1'/>
Run Code Online (Sandbox Code Playgroud)
当我的代码在 <Drill> 元素上方找到时,我希望它检索 id='1' 的 <Hole> 元素中 'dia' 和 'depth' 属性的值。
当然,我可以搜索 id 等于 'useHoleWithId' 值的 <Hole> 元素,然后获取属性的值,但我想也许有更好的方法来使用一些 XML 技巧来做到这一点。在那儿?
PS - 虽然我对它们一无所知,但 XPath、XLink、XQuery 或 XPointer 中的任何一个都可能有所帮助。
我有一个包含15个数字的列表,我需要编写一些代码来生成这些数字的所有32,768种组合.
我发现了一些代码(通过谷歌搜索)显然正在寻找我正在寻找的东西,但我发现代码相当不透明并且对使用它很谨慎.另外我觉得必须有一个更优雅的解决方案.
我发生的唯一事情就是循环遍历十进制整数1-32768并将它们转换为二进制,并使用二进制表示作为过滤器来选择适当的数字.
有谁知道更好的方法?使用map(),也许?
我正在编写一个Java项目,在编译时发出以下警告:
/src/com/myco/apps/AppDBCore.java:439: warning: unmappable character for encoding UTF8
[javac] String copyright = "? 2003-2008 My Company. All rights reserved.";
Run Code Online (Sandbox Code Playgroud)
我不确定SO会如何在日期之前渲染角色,但它应该是版权符号,并在警告中显示为钻石中的问号.
值得注意的是,角色正确地出现在输出工件中,但警告是令人讨厌的,包含此类的文件可能有一天会被文本编辑器触及,这会错误地保存编码...
如何将此字符注入"copyright"字符串,以便编译器满意,并且该符号保留在文件中而没有潜在的重新编码问题?
c# ×4
java ×3
.net ×1
arguments ×1
ascii ×1
casting ×1
combinations ×1
concurrency ×1
encoding ×1
gif ×1
java-io ×1
jpeg ×1
performance ×1
powershell ×1
procedures ×1
python ×1
static ×1
syntax ×1
transparency ×1
utf-8 ×1
windows ×1
xml ×1
xpath ×1
xslt ×1