Je travaille sur le portage du code VB6 classique en C # et je suis tombé sur une utilisation de la fonction Je me sens mal, y compris une référence à l'Assemblée Microsoft.VisualBasic. Est-ce quelque chose qui est couramment fait, ou devrais-je explorer d'autres options? L'idée suivante qui apparaît dans mon esprit explore cette fonction PV dans le réflecteur. P> pv code>. p>
4 Réponses :
Vous pouvez utiliser cette bibliothèque qui duplique des fonctions Excel dans F # P>
Library P>
Il a PV qui est la valeur actuelle. Je l'ai utilisé une ou deux fois. Il suffit de le laisser tomber et d'ajouter la référence. P>
Hmmm semble un peu risqué de compter sur une langue CTP, mais je pense que je préférerais faire cela que référence à la bibliothèque Microsoft.VisualBasic
Exactement, quand je l'ai utilisé, c'était pour éviter l'automatisation Excel et référencer Excel
La version "no notandalone" est de près de 1 mégot ... presque tentée de simplement attraper la fonction PV du réflecteur, mais je vais donner un coup de feu
Je préfère la solution de JDunkerley - je préfère ajouter une fonction de 2 lignes à mon code plutôt que de faire référence à une assemblée entière.
@Dave - -2 (-1 (-1 parce que je ne suis pas d'accord, et un autre -1 parce que je suis désemparé si noob et a accidentellement évoqué votre commentaire, et je ne peux pas l'annuler. Doh! ;-) Sérieusement, il y a du bien Stuff dans les bibliothèques VB (formes, par exemple). Je pense que c'est abrégé de ne pas profiter à cause du snobisme anti-VB.
@Tom Bushell Je suis d'accord dans ce cas si la fonction est exacte mais la bibliothèque offre également d'autres fonctions telles que YTM, ce qui est beaucoup plus difficile à reproduire et était ce dont j'avais besoin à l'époque.
@Tom tu as tordu mon bras, je vais juste l'utiliser.
Vous suggérez donc d'utiliser une bibliothèque non prise en charge d'une bande d'un homme à partir de galeries de code, juste pour éviter d'utiliser une bibliothèque de base entièrement prise en charge à partir du .NET Framework? Et cela a reçu des upvotes? Le débordement de la pile a soufflé un fusible. (L'utilisation de YTM pourrait avoir un sens, mais ce n'était pas la question dans ce cas.)
@MarkJ Je ne suggère pas qu'il n'utilise pas Microsoft.Visualbasic, je l'ai simplement dirigé vers une alternative. Sauf si je me trompe, je crois que c'était ce qu'il demandait. J'ai été signalé à cette bibliothèque moi-même d'une question similaire que j'ai postée.
La question était "est-ce que cela [évitant Microsoft.Visualbasic] quelque chose qui est couramment fait, ou devrais-je explorer d'autres options". Donc, si vous le signalez à une autre bibliothèque, vous conseillez implicitement en supprimant Microsoft.VisualBasic. Ou c'est comme ça que je l'ai lu quand même.
assez droit vers l'avant pour reproduire en C # juste un re-arrangement de la formule Microsoft fournit . P> p>
C'est presque un réarrangement de la formule de Microsoft, sauf lorsque le taux = 0. C'est lorsque votre version divise par zéro et VB6 et Microsoft.VisualBasic retourner -fv - (PMT * NPER) code>. Il y a des pièges même dans la codage d'une formule d'une page Web. Cela renforce ma réponse - pour la pitié, juste Utilisez Microsoft.VisualBasic B> et passez à mettre en œuvre une autre fonctionnalité pour les pauvres anciens utilisateurs.
L'utilisation de edit: strong> Il dit qu'au moment de taper, les autres réponses de cette question sont un de réimplémentation incorrecte em> de la fonction, et une bande d'un homme non supporté Bibliothèque à partir de galeries de code. Venez les gars, il faudrait un vrai événement majeur pour que Microsoft dépose les fonctions financières de VB . p>
C'est une histoire différente pour Microsoft.VisualBasic.compatibilité Strong>, qui est exclusivement à utiliser par l'assistant de mise à niveau VB6, edit fort> a été marqué obsolète. NET 4 EM> (ma prédiction est devenue réalité) et ne doit pas être utilisée pour un nouveau développement. Il y aurait des avantages dans l'élimination des références à cela, mais personnellement, j'essaierais probablement d'obtenir un port de travail entièrement de travail. Net 3.5. P>
D'accord à 100% avec cela. D'où vient cette réticence à utiliser la bibliothèque prise en charge de Microsoft? Est-ce juste le "ewwww ... il dit vb" mentalité? Wtf? Microsoft a écrit VB6, C #, puis fourni (gratuitement) l'espace de noms Microsoft.Visualbasic à cet effet. Et toujours les gens hésitent à l'utiliser. Peu importe - prenez vos chances avec une autre option "non-VB, donc meilleure" ".
Juste pour ajouter: à la fin de la journée, tout est IL. Je peux écrire des choses dans C #, Visual Basic.Net, IronPython et Boo et la jeter dans le mélangeur (= compilateurs) et récupérer il qui ne sait pas ce que c'était auparavant.
Il y a une stigmatisation contre l'utilisation de VB parmi les développeurs C # et donc parce que cela a VisualBasic au nom, ils ne l'aiment pas parce qu'ils pensent qu'ils programment dans VB. Peut-être que MS devrait renommer cela sur Microsoft.reallyUtiliséAndsupporDsupports Code> et tout le monde sera heureux
J'ai essayé d'utiliser la réponse acceptée, mais je ne pouvais pas l'obtenir pour travailler dans le noyau .Net. J'ai fait des soins autour de ce code sur Github qui semble être la mise en œuvre de Microsoft de PV:
Public Function PV(ByVal Rate As Double, ByVal NPer As Double, ByVal Pmt As Double, Optional ByVal FV As Double = 0, Optional ByVal Due As DueDate = DueDate.EndOfPeriod) As Double Dim dTemp As Double Dim dTemp2 As Double Dim dTemp3 As Double If Rate = 0.0# Then Return (-FV - Pmt * NPer) Else If Due <> 0 Then dTemp = 1.0# + Rate Else dTemp = 1.0# End If dTemp3 = 1.0# + Rate ' WARSI Using the exponent operator for pow(..) in C code of PV. Still got ' to make sure that they (pow and ^) are same for all conditions dTemp2 = dTemp3 ^ NPer 'Do divides before multiplies to avoid OverFlowExceptions Return (-(FV + Pmt * dTemp * ((dTemp2 - 1.0#) / Rate)) / dTemp2) End If End Function