你如何在C#中做"内联函数"?我认为我不理解这个概念.他们喜欢匿名方法吗?像lambda函数?
注意:答案几乎完全处理内联函数的能力,即"用被调用者的主体替换函数调用站点的手动或编译器优化".如果您对匿名(也称为lambda)函数感兴趣,请参阅@ jalf的答案或者每个人都在说什么'Lambda'?.
我正在滚动我自己的记录器类,并希望在应用程序通过不同阶段时表示日志的层次结构:
log start
loading
loaded 400 values
processing
couldn't process var "x"
Run Code Online (Sandbox Code Playgroud)
等等
在C++中(是的,我知道),我会使用RAII类在创建时将自己压在日志堆栈上,并在它们离开作用域时弹出.然后,您可以在任何时候离开函数并仍然具有一致的日志记录.
显然在C#中,任何变量都必须是新的,所以在下一个垃圾收集周期之前它不会被删除,如果你立即创建一个新的classlet,你可能会有一个不同步的记录器.
人们如何在C#中尝试解决这个问题?我希望记录器语法尽可能不引人注目,并且仍然支持具有多个出口点的函数.
我能想到的唯一解决方案是让closeHeirarchy()调用每个return语句 - 而且你知道我会在某个地方错过一个.
编辑:我应该说清楚我主要对如何在c#中复制RAII行为感兴趣.是否存在提供相同行为的机制?
我想我已经非常擅长编程的基础知识(适用于各种语言).我可以写一个*好的**代码行.我可以写一个好方法.我可以写一堂好课.我可以写一组很好的课程.我可以写出好的小型或中型应用程序.
但是,我不知道如何构建一个好的大型应用程序.特别是在涉及多种技术并且更多可能与时间有关的情况下.假设一个带有大型Web前端的项目,一个连接到其他集成后端的大型服务器后端,最后是一个庞大而复杂的数据库.哦,我参与了其中的一些应用程序,我可以构建一个我确定的.然而,我不太确定它是否有资格作为"好".
因此,我的问题是参考书籍或其他良好的阅读来源,在那里我可以学习如何为一般大型项目分发和组织代码和数据.例如,我是想要非常严格地对事物进行分层,还是要将其封装为独立单元.我是否想要尝试将大部分逻辑保留在同一个池中,或者它应该只是分布,因为在添加我添加的任何功能时它似乎最合乎逻辑.
我已经看到很多关于这些问题的一般原则(例如没有意大利面条代码,肉丸代码......),并阅读了一些讨论此事的优秀文章,但我从来没有遇到过能引导我具体实践知识的来源.我意识到问题的难点,所以我很高兴听到其他人发现的帮助他们寻求这些知识的读物.
一如既往,感谢您的回复.
****鉴于"好"代码定义的辩论性质,在这种情况下,术语"好"将不会被定义(它意味着你认为它应该是什么意思).
我试图将oauth与rares-branch Ruby gem一起使用.我一直收到错误:
OAuth的实例:: Consumer需要有方法`marshal_load'
我的代码,activate.rb如下.有关如何解决此问题的任何想法?谢谢!-Henry
require 'oauth/consumer'
def index
@consumer = OAuth::Consumer.new("CONSUMER KEY","CONSUMER SECRET", {
:site => "http://api.netflix.com",
:request_token_url => "https://api-user.netflix.com/oauth/request_token",
:access_token_url => "http://api.netflix.com/oauth/access_token",
:authorize_url => "https://api-user.netflix.com/oauth/login",
:application_name => "AppName"})
@request_token = @consumer.get_request_token
session[:request_token]=@request_token
session[:request_token_secret]=@request_token.secret
@authorize_url = @request_token.authorize_url({
:oauth_consumer_key => "CONSUMER KEY"
:application_name => "AppName",
:oauth_callback => "http://localhost:3000/activate/callback"
})
redirect_to @authorize_url
end
def callback
@request_token=OAuth::RequestToken.new(session[:request_token],
session[:request_token_secret])
@access_token = @request_token.get_access_token
end
Run Code Online (Sandbox Code Playgroud) 我想知道你在应用程序开发过程中使用了什么后门技术进行测试.在发布方法之前哪些是最简单,最少侵入性和最容易删除的?
到目前为止,我提出了两种主要方法:
1)活动 - 即开发人员可以通过特制的命令行或执行期间的输入向程序发送某种类型的命令
2)被动 - 即注册表项或ini文件.
一般来说,我不认为这个问题有正确或错误的答案(除非它包括将后门留给发布版),但我很想知道其他人多年来采取的方法.:)
使用J2ME Media库的音频播放的最佳方法是什么?例如,我应该使用MMAPI还是应该使用Midlet的platformRequest(String s)方法?
Windows终端(像cmd.exe这样的文本应用程序周围的用户界面)真的很糟糕.
Windows终端显然无法做到的Unix风格终端有很多功能,例如,如果你想通过拖动边框来重新调整两个维度的窗口大小.Windows终端只允许您更改其长度.
切换和粘贴,在Linux或Unix上,没问题 - 选择框很好地包装,所以你可以剪切多行表达式.Windows终端(即使在快速编辑模式下)强制使用一个没有实际用途的奇怪的矩形选择框 - 您必须重新格式化在记事本中复制的所有内容!
事实上,只要我进入"编辑"模式,它就会阻止应用程序 - 我确信有些人希望能够在不停止业务关键型服务器的情况下进行剪切和粘贴.
我敢肯定,如果我们把它放在心上,我们可以想到更多的错误 - 但不要抱怨......我们能做些什么才能让它变得更好?
更新:为了澄清,我不打算替换cmd.exe - Powershell和CygWin都提供了更好的选择.我正在尝试替换控制台应用程序,即围绕Windows中所有文本应用程序的GUI.
我似乎在Google中使用了错误的搜索字词...
我为多对多关联编写了一个通用类,但我猜这已经完成了.它很可能存在于比我自己更好的实现中.这是我第一次尝试编写泛型类.
为了更好地了解我正在寻找的东西,我收录了一些我自己的片段:
我用2个哈希映射支持它:
private final Map<T, List<S>> ssForTs = new HashMap<T, List<S>>();
private final Map<S, List<T>> tsForSs = new HashMap<S, List<T>>();
Run Code Online (Sandbox Code Playgroud)
这是实例化:
new ManyToManyAssociations<Integer, Integer>();
Run Code Online (Sandbox Code Playgroud)
一些可用的方法:
这些方法的名字很差......我道歉.
基本用法是:我可以很容易地找到所有S for T和反向.
您是否可以将链接发布到已包含此功能的抛光库中?
希望有人能够对我目前使用Oracle数据库的问题有所了解 - 我确信这很简单!
我已经设法在一个示例中重新创建了这个,所以这里是数据库结构:
CREATE TABLE MyTable(
ixMyTable NUMBER,
clobData CLOB
)
/
CREATE OR REPLACE PACKAGE PKGTEST
AS
PROCEDURE DoSomething(
cur_OUT OUT SYS_REFCURSOR
);
END PKGTEST;
/
CREATE OR REPLACE PACKAGE BODY PKGTEST
AS
PROCEDURE DoSomething(
cur_OUT OUT SYS_REFCURSOR
)
AS
BEGIN
OPEN cur_OUT FOR
SELECT ixMyTable, clobData
FROM MyTable;
END;
END PKGTEST;
/
GRANT EXECUTE ON PKGTEST TO TEST_ROLE
/
BEGIN
FOR i IN 1 .. 7000 LOOP
insert into mytable values (i, TO_CLOB('123456'));
END LOOP;
END;
/ …
Run Code Online (Sandbox Code Playgroud)