将数字量转换为英文单词的算法
将数字量转换为英语单词的最有效方法 例如. 12至十二 127至一百二十七个 解决方案 不需要很长时间.这是用Java编写的实现. /p> 代码 public class IntToEnglish { static String[] to_19 = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" }; static String[] tens = { "twenty", "thirty", "forty", "fifty", "sixty", "seventy",
2 2024-01-22
编程技术问答社区
Objective-C:如何防止抽象性泄漏
我收集到,即使这些变量是实现详细信息并具有私人访问权限,我也必须在Objective-C中声明实例变量为我类界面的一部分. 在"主观" C中,我可以在.c文件中声明一个变量,并且在该编译单元之外看不到它.我可以在相应的.h文件中声明它,然后在该汇编单元中链接的任何人都可以看到变量. 我想知道Objective-C中是否有同等的选择,或者我是否确实必须为我的班级中的每个IVAR声明. ari. 解决方案 ari, 很好地引用了如何完成"不可见的"实例变量声明可以希望它有帮助, 弗兰克 其他解决方案 传统上需要实例变量来确定类的大小.直接访问Ivars一直是糟糕的做法,这不是重点.在现代运行时,这是不必要的,但是无论如何,除非客户依靠班级的ivars,否则这不是抽象泄漏,这是不可能的,因为您将其宣布为@protected或@private>,对吗? 其他解决方案 要限制访问,您可以使用@private或@protected关键字: @in
0 2024-01-09
编程技术问答社区
多重继承的接口是多余的吗?
这不是关于抽象类和接口之间区别的另一个问题,因此请在投票之前三思而后行. 我知道接口在不支持多种继承的OOP语言中至关重要 - 例如C#和Java.但是,那些带有多重继承的呢?在具有多个继承的语言中,将是接口(作为特定语言功能)的概念吗?我想可以使用抽象类建立类之间的"合同". 或更明确地说,C#和Java中的接口只是它们不支持多个继承的事实的结果吗? 解决方案 ...缺乏多重继承 迫使我们添加 接口... krzysztof cwalina,在 c#编程语言(4th ed. )(第56页) 是的,我相信界面是多余的,给定多个继承.您可以使用支持多个继承或混合插入的语言中的纯抽象基类. 也就是说,我大多数时候都对单一继承感到满意.埃里克·利普特(Eric Lippert 其他解决方案 根本不是.接口定义合同而无需指定实施. 因此,即使存在多个继承,也需要它们 - 继承与实施有关. 从技术上讲,您可以在多个继承中使用抽象类来模拟接口
0 2024-01-09
编程技术问答社区
如何处理返回结构的不可变性问题?
我正在写一个具有大量2D"单元格"的游戏.一个单元仅采用3个字节.我还有一个名为CellMap的类,该类包含2D数组作为私有字段,并通过公共索引器提供访问. 分析表明,性能问题是由垃圾收集过多引起的.因此,我决定将单元格成为结构(这是一类). 但是现在这样的代码不起作用: cellMap[x, y].Population++; 我可以想到很多选择,但是我真的不喜欢其中的任何一个. 使数组公开,然后写cellMap.Data[x, y].Population = 5; 停止使用Cellmap类,只需直接使用2D阵列即可.但是CellMap非常方便,因为它实现了自己的优化序列化,并且暴露了Width和Height属性,这些属性比写作cellMap.GetLength(0) 更方便 使细胞不变.但是代码看起来如何? cellMap[x, y] = IncrementCellPopulation(cellMap[x, y])?非常详细. 几个实用功能像cellM
18 2024-01-05
编程技术问答社区
被Boxing混淆了。将-1转换为Int64抛出InvalidCastException
好吧,我必须忽略一些非常简单的东西,但我迷路了. 给定这个 object val = -1; var foo = (Int32)(val); var bar = (Int64)(val); 铸造INT64投掷和无效CastException的演员. 我认识到这与拳击的陌生性有关,但我不明白推理. 从我所理解的val盒中,第一行中的int32盒子. 然后,当我尝试将其作为INT32 InvalidcastException以外的其他东西时.我想这意味着当它实际上是int32时,我试图将其作为int64拆开? 仍然很奇怪.演员不能拆开值,然后尝试执行演员表吗? 类似的东西(显然这太过过于简单,也许是不知道的盒装类型,所以这是不可能的吗?): object val = -1; Int32 unboxed = (Int32)(val); var bar = (Int64)(unboxed); 某人(阅读:Eric Lippert)让我对此的
0 2024-01-05
编程技术问答社区
在C#中我是否应该更喜欢静态方法
花了一些时间学习功能编程,我想使用不执行任何突变的静态方法变得越来越自然. 有什么原因我应该遏制这种本能? 解决方案 我发现的问题有些奇怪,因为没有执行突变的静态方法和方法是方法的两个正交分类.您可以具有突变的静态方法和非挤压实例方法. 对我来说,结合功能和OO编程变得越来越自然.我喜欢不执行突变的实例方法.功能编程更容易理解,因为它不鼓励复杂的突变. OO编程更容易理解,因为代码及其运行的数据都很近.为什么选择?拥抱"和"的力量;同时做! 其他解决方案 您可以以这种方式编写工作程序,但这不是惯用的.如果您想在团队中工作,我会尝试遏制它.如果没有其他人正在阅读您的代码,那就发疯了. 其他解决方案 由于某种原因,当我阅读您的问题时,我想到了这句话: 您可以用任何语言编写Fortran. 如果C#的意图纯粹是功能性的,则static将不必要,因为默认情况下所有内容都是静态的.如果您严格遵循OOP实践和坚实的原则,那么您的代码有效地起到了功能(我
0 2024-01-04
编程技术问答社区
C#内部VS VBNET朋友
对这个问题:朋友的c#等效是什么?,我个人会回答"内部",就像JA在答案中所做的一样!但是,乔恩·斯基特(Jon Skeet)说,C#中的VB朋友没有直接等效.如果乔恩·斯基特(Jon Skeet)这样说,我不会说否则! ; p 我想知道关键字 friend(visual Basic)声明语句中的关键字指定可以从同一组件内访问元素,但不能从组件外部访问. [...] 内部C# P> 就我的理解,这些定义对我来说意味着相同. ,分别分别在vb.net中进行编码时,我使用 friend 关键字来指定只有在声明其声明的程序集中才能访问类或属性.在C#中相同,我使用 internal 关键字来指定相同的内容. 我从这个角度做事了吗? 我没有得到什么改进? 有人可以解释什么朋友和内部不是直接等价的? 事先感谢您的任何答案! 解决方案 我已经说过 c ++ "朋友"概念没有直接等效的.这与vb.net Friend概念不同,这确实等于inte
2 2024-01-04
编程技术问答社区
读取对象属性时忽略NullReferenceException
是否有任何方法可以指导C#忽略一组语句的NullReferenceException(或任何特定的例外). 当尝试从可能包含许多null对象的供应对象读取属性时,这很有用. 拥有一个辅助方法来检查NULL可能是一种方法,但我正在寻找接近"下一步错误简历"(从VB)(从VB)处于语句级别的范围. 编辑:Try-Catch将跳过异常的后续语句 try { stmt 1;// NullReferenceException here, will jump to catch - skipping stmt2 and stmt 3 stmt 2; stmt 3; } catch (NullReferenceException) { } 例如:我必须将XML消息列为对象,然后尝试访问 之类的属性 Message.instance[0].prop1.prop2.ID 现在,prop2可能是一个零对象(因为它不存在于XML消息中 - XSD中的可选元素).现在,在
6 2024-01-04
编程技术问答社区
循环优化或lambda的关闭有问题?
在以下方法中,我要发送列举操作,并希望将一系列iCommands回到包装这些操作的调用Action(the RelayCommand需要). 问题是,如果我在每个(甚至是循环)内部执行此操作,我会收到命令,这些命令总是执行参数中传递的第一个操作. public static ICommand[] CreateCommands(IEnumerable actions) { List commands = new List(); Action[] actionArray = actions.ToArray(); // works //commands.Add(new RelayCommand(o => { actionArray[0](); })); // (_execute = {Method = {Void
2 2024-01-04
编程技术问答社区
一个C#/CLI标识符的最大长度是多少?
名称上还有哪些其他限制(范围内的明显唯一性)? 这些定义在哪里? 解决方案 来自 元数据保留由编译器或代码生成器创建的名称字符串,不变.本质上,它可以对待 每个字符串都是不透明的斑点.特别是它保留了案​​例. CLI对存储在元数据中的名称的长度没有限制,随后由CLI 处理 如果我正确阅读了此内容并且上下文正确,那么CLR中标识符的长度没有实际限制. 其他解决方案 除其他答案外,Microsoft Visual C#编译器接受的最大标识符长度是 511字符.可以使用以下代码进行测试: class Program { private static void Main(string[] args) { int aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2 2024-01-02
编程技术问答社区
.NET中的等价类加载器
有人知道是否可以定义.NET中的" Java自定义类加载程序"的等效? 给出一点背景: 我正在开发一种针对CLR的新编程语言,称为"自由".该语言的功能之一是其定义"类型构造函数"的能力,该方法是由编译器在编译时间执行并以输出生成类型的方法.它们有点像仿制药(该语言确实具有普通的仿制药),并且允许写入这样的代码(在"自由"语法中): var t as tuple; t.i = 2; t.j = 4; t.k = 5; 其中定义了"元组": public type tuple(params variables as VariableDeclaration[]) as TypeDeclaration { //... } 在此特定示例中,类型构造函数tuple提供了类似于vb和c#中的匿名类型的东西. 但是,与匿名类型不同,"元组"具有名称,可以在公共方法签名中使用. 这意味着我需要一
4 2024-01-02
编程技术问答社区
.NET的未来版本是否会支持C#中的图元?
.net 3.5不支持元组.太糟糕了,但是不确定未来版本的.NET是否会支持元组? 解决方案 我刚刚从《 MSDN》杂志中读了这篇文章:这是摘录: 即将发布的4.0 Microsoft .NET框架引入了一种新类型 称为System.Tuple. System.Tuple是一个 固定尺寸的集合 异构键入数据. 像阵列一样,元组有固定的 大小一旦拥有就无法更改 已创建.与数组不同,每个数组 元组中的元素可能是不同的 类型,元组能够保证 每个元素的强烈打字. 已经有一个例子 元组漂浮在微软周围 .NET框架,在 system.collections.generic名称空间: KeyValuePair.虽然可以将KeyValuePair视为相同 作为元组,因为它们都是 拥有两件事的类型 KeyValuePair感觉与 元组是因为它唤起了关系 在它存储的两个值之间(和 有充分的理由,因为它支持 字典类). 此外,可以任意地 尺寸,而KeyValuepair只有 两
6 2024-01-02
编程技术问答社区
DateTime.Now vs. DateTime.UtcNow
我一直想知道这两个属性的工作原理到底是什么.我知道第二个是普遍的,基本上不处理时区,但是有人可以详细解释它们的工作原理以及在哪种情况下应使用哪个? ? 解决方案 dateTime.utcnow 告诉您在统一的通用时间中,日期和时间也称为格林威治的平均时间区域 - 基本上就像是如果您在伦敦英格兰,但在夏季不在. dateTime.now 提供日期和时间出现在您目前的地区中的某人. 我建议使用DateTime.Now每当您显示与人类的日期时 - 这样他们对所看到的价值感到满意 - 这是他们可以轻松地将其与他们在手表上看到的东西相提并论或钟.使用DateTime.UtcNow当您要存储日期或使用它们以稍后计算(在客户端服务器模型中)时,您的计算不会与服务器不同时区或彼此之间的客户端混淆. 其他解决方案 这真的很简单,所以我认为这取决于您的听众和他们的住所. 如果您不使用UTC,则必须必须知道您要显示日期和时间的人的时区 - 否则,您会告诉他们在系统或服务器中的下午
4 2024-01-02
编程技术问答社区
如何在C#中循环浏览所有枚举值?
这个问题在这里已经有一个答案: 我如何在C#? public enum Foos { A, B, C } 有没有办法循环浏览Foos的可能值? 基本上? foreach(Foo in Foos) 是的方法: var values = Enum.GetValues(typeof(Foos)); 或类型版本: var values = Enum.GetValues(typeof(Foos)).Cast(); 我很久以前就在我的私人图书馆中添加了一个助手功能: public static class EnumUtil { public static IEnumerable GetValues() { return Enum.GetValues(typeof(T)).Cast(); } } 用法: var values = EnumUtil.Get
4 2024-01-02
编程技术问答社区
谁能解释一下收益率这个关键词?
我已经看到堆栈溢出和博客上使用了很多收益关键字.我不使用 linq .有人可以解释收益率关键字吗? 我知道存在类似的问题. 但是没有人真正解释它在简单的语言中的用途. 解决方案 到目前为止,对此的最佳解释(我已经看到)是乔恩·斯基特(Jon Skeet)的书 - 那章是免费的!第6章, c#in Depth .我在这里没有什么可以添加的. 然后买书;您将成为更好的C#程序员. 问:为什么我不在这里写一个更长的答案(从评论中解释);简单的.正如Eric Lippert所观察到的(在这里),yield构造(以及后面的魔法)是 C#编译器中最复杂的代码中的单一代码,并尝试描述在这里的简短回复中,它充其量是天真的. yield有很多细微差别,以至于IMO最好参考先前存在的(且完全合格的)资源. Eric的博客现在有7个条目(这只是最近的条目)讨论yield.我对埃里克有一个 的尊重,但他的博客可能更合适,因为 对这个主题感到满意的人(yield in这种情况),因
0 2023-12-25
编程技术问答社区
这是把HTML放在PHP中的正确方法吗?
我是PHP的新手,大多数时候我都在回应我的HTML.今天,我找到了这种方法,这使事情变得容易1000倍: HTML can go here without echo'ing it 但是这是一种公认​​的方式吗?似乎每次都起作用.谢谢. 解决方案 主要是关于您喜欢读取代码的方式. 使用具有自动完整/代码建议的IDE,最好使用 因此,自动完成/建议功能知道何时使用HTML以及何时使用PHP建议您的代码.当然,选择以后易于阅读的编码样式很不错. 据我所知,代码突出显示不起作用,不应该在内部工作 echo ' ...'; 不同的编码样式: 除了已经提到的没有很大的差异.例如使用 echo " $var1 $var2 ..."; 对
60 2023-12-20
编程技术问答社区
HTML的隐藏功能
HTML是使用最广泛的语言(至少作为标记语言)尚未获得适当的信誉. 考虑到它已经存在了很多年了,诸如表单/输入控件之类的东西仍然保持不变,没有添加新的控件. 至少从现有功能中,您知道 但非常有用的任何功能吗? 当然,这个问题与: 的线 javascript的隐藏功能 CSS的隐藏功能 c#的隐藏功能 vb.net的隐藏功能 Java的隐藏功能 经典ASP的隐藏功能 asp.net的隐藏功能 Python的隐藏功能 textpad的隐藏功能 eclipse的隐藏功能 不要提及html 5.0的功能,因为它在工作草稿 请指定每个答案的功能. 解决方案 使用独立于协议的绝对路径: 如果浏览器正在通过HTTPS查看SSL中的一个页面,则它将使用HTTPS协议请求该资产,否则它将使用http. 请求它. 这可以防止可怕的"此页面包含安全和非
8 2023-12-20
编程技术问答社区
可选的命名参数,而无需将它们全部包裹在" optionValue"中
假设我具有一个可选的命名参数的函数,但我坚持用其未经修饰的名称来指代参数. 考虑此功能,添加了两个命名参数A和B: Options[f] = {a->0, b->0}; (* The default values. *) f[OptionsPattern[]] := OptionValue[a] + OptionValue[b] 如何编写该功能的版本,其中最后一行被简单地a+b替换? (想象一下a+b是一个全部代码.) 以下问题的答案显示了如何缩写OptionValue(更容易说起来做不做),但不能完全摆脱它:可选的参数 哲学附录:似乎Mathematica将使用OptionsPattern和OptionValue具有这种魔术,它可能会一直走,并且具有适当地进行命名参数的语言构造,您可以在其中参考它们你知道他们的名字.像其他所有具有命名论点的语言一样. (与此同时,我很好奇什么可以解决……) 解决方案 这是我答案的最终版本,其中包含Brett
2 2023-12-11
编程技术问答社区
Mathematica中的ForEach循环
我想要这样的东西: each[i_, {1,2,3}, Print[i] ] 或更一般而言,要在您要循环的列表中破坏任意内容,例如: each[{i_, j_}, {{1,10}, {2,20}, {3,30}}, Print[i*j] ] 通常,您想使用Map或其他纯粹功能性的构造,并避免使用副作用的非功能编程样式.但这是一个例子,我认为一个面孔的结构非常有用: 说我有一个选项列表(规则),将符号与表达式配对,例如 attrVals = {a -> 7, b -> 8, c -> 9} 现在,我想制作一个哈希表,在其中将这些符号明显的映射到这些数字上.我认为没有比 更干净的方法 each[a_ -> v_, attrVals, h[a] = v] 其他测试用例 在此示例中,我们转换了一个变量列表: a = 1; b = 2; c = 3; each[i_, {a,b,c}, i = f[i]] 上述后,{a,b,c}应
0 2023-12-11
编程技术问答社区
JavaScript是否有合法用途;s��具有�� 陈述
alan storm的评论对我的回答,我的回答=" https://developer.mozilla.org/en-us/docs/web/javascript/reference/reference/statement/with" rel =" noreferrer"> with语句让我开始思考.我很少找到使用此特定语言功能的理由,并且从未考虑过如何造成麻烦.现在,我很好奇我如何有效利用with,同时避免其陷阱. 您在哪里找到with语句有用? 解决方案 今天我发生了另一种用途,所以我兴奋地搜索了网络,并发现了现有的提及:定义块内部范围内变量. 背景 JavaScript尽管与C和C ++的表面相似,但并未将其范围变量与它们定义的块相位: var name = "Joe"; if ( true ) { var name = "Jack"; } // name now contains "Jack" 在循环中宣布关闭是一项常见的任务,这可能导致
6 2023-12-10
编程技术问答社区